项目背景:项目主要是由flutter开发的,并且已经集成了展示互动,打算再集成保利威。目前保利威最新版本是V0.13.1

坑1:当前demo支持targetSdkVersion 27版本及以下,而主项目中用到的版本是29,所以初步考虑是降低版本,也就是将项目中的androidx降为support v7包,经过一系列的尝试,发现展示互动module中用到的androidx是集成到jar包中的,无法降低。

坑2:尝试升级demo,demo的导入需要将demo转成module,这一步骤包括:

1、polyvapp/build.gradle文件,更改如下代码:

apply plugin: 'com.android.application' -> apply plugin: 'com.android.library'defaultConfig {consumerProguardFiles 'proguard-rules.pro' -> 添加这行代码applicationId "com.easefun.polyv.cloudclassdemo" -> 注释/删除这行代码
}//注释掉打包app用到的配置,例如:  需要将项项目中所有打包用到的配置都注释掉,包括signingConfigs之类的
android.applicationVariants.all { variant ->variant.outputs.all {outputFileName = "${variant.name}_${variant.versionName}_${currentTime()}.apk"}
}

2、polyvapp/src/main/AndroidManifest.xml文件,更改如下代码:

<!--删除application的属性配置,并注释程序入口--><application><activityandroid:name=".login.PolyvCloudClassLoginActivity"android:windowSoftInputMode="stateHidden|adjustResize">
<!--            <intent-filter>-->
<!--                <action android:name="android.intent.action.MAIN" />-->
<!--                <category android:name="android.intent.category.LAUNCHER" />-->
<!--            </intent-filter>--></activity>...</application>

3、该模块中的PolyvCloudClassApp.java文件中,将oncreate中的代码提取出来,封装成一个静态方法。供后续主项目初始化调用。

4、依赖模块修改:要将所有的v7包相关的库都改为androidx对应的库,详细参照:https://www.jianshu.com/p/5ff650460161

这一步还是遇到了问题:

  • 展示互动module中和保利威module中都使用了B站的弹幕,一直提示冲突,将展示互动中的弹幕引用注释掉,放开保利威的引用:
//展示互动 注释掉
//    implementation files('libs/gensee_danmu.jar')//保利威 api放开api 'com.easefun.polyv:polyvSDKCloudClass:0.14.0'
  • 将保利威的两个module合二为一,commonUI部分主要就是UI、工具类,合并起来也方便,将commonUI部分的代码,拷贝到保利威的app module中,将依赖库合并到一起,这样引起的冲突会少一些,最终依赖中的引用部分代码如下:

    dependencies {implementation fileTree(include: ['*.jar'], dir: 'libs')implementation 'androidx.appcompat:appcompat:1.1.0'implementation 'androidx.viewpager:viewpager:1.0.0'implementation 'androidx.constraintlayout:constraintlayout:2.0.0-alpha2'
    //    implementation ("com.android.support:multidex:1.0.3") {
    //        exclude group: 'com.android.support'
    //    }api 'com.easefun.polyv:polyvSDKCloudClass:0.14.0'implementation 'androidx.recyclerview:recyclerview:1.0.0'implementation 'androidx.multidex:multidex:2.0.0'testImplementation 'junit:junit:4.12'androidTestImplementation 'androidx.test:runner:1.1.0'androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0'implementation 'com.google.android.material:material:1.0.0'annotationProcessor 'androidx.annotation:annotation:1.0.0'implementation 'androidx.test.espresso:espresso-core:3.1.0'//glideimplementation ('jp.wasabeef:glide-transformations:3.3.0'){
    //        exclude group:'com.github.bumptech.glide',module:'glide'}implementation ("com.github.bumptech.glide:okhttp3-integration:4.7.1"){
    //        exclude group:'com.github.bumptech.glide',module:'glide'}annotationProcessor 'com.github.bumptech.glide:compiler:4.8.0'
    }

    在这过程中要不断地clean项目,flutter总项目目录下删除buid并刷新重启。历经千辛万苦终于集成成功。

坑3: 集成完成后,需要初始化并且使用module,具体有以下几个问题:

  1. 保利威文档中要求在application中加入初始化代码,而flutter如何在原生中加入初始化代码,这个问题困扰了很久发现没法重写flutterApplication(作为菜鸟,目前还没有找到合适的方法),就把代码写到继承FlutterActivity()的子类的oncreate中,该类主要用来注册flutter和原生交互的方法,运行程序,进入直播页面,黑屏,打印的log显示内存溢出,这种情况一般是考虑是否初始化失败,于是,通过打断点发现,并没有走oncreate的方法,初始化失败,只能把代码放到了调用直播方法的实现类中,当然目前体验特别差,每次进入直播都要初始化一次,需要进一步优化。
  2. 再次运行程序,发现找不到module中的PolyvCloudClassHomeActivity类,该步需要将AndroidManifest.xml中引用的activity路径写完整,并且每个activity都要加上theme,最好是加载activity里 ,而不是application标签下,否则容易出现冲突的问题,具体代码如下:
            <activityandroid:name="com.easefun.polyv.cloudclassdemo.watch.PolyvCloudClassHomeActivity"android:configChanges="keyboardHidden|orientation|screenSize"android:theme="@style/Theme.AppCompat.Light.NoActionBar"android:windowSoftInputMode="stateHidden|adjustResize"></activity>
  3. 再次运行程序,提示无法启动PolyvCloudClassHomeActivity,仔细阅读log发现是布局中用的recycleView是v7包里的,通过快捷键command+shift+f(window是:ctrl+shift+f)搜索哪一个文件中用到v7包里的recycleView,都转成androidx包中的。再次运行程序,通过。

该项目经过几个回合,由于百利威官方还没有适配androidx,一直没有自信能集成成功,中途遇到bug多次想要放弃升级,在同事的耐心帮助下,最终集成完毕,所以说,没有解决不了的bug,只有不努力的程序员。未来的码农生涯中,需要多多修行,多改bug,做一个合格的码农。

android集成保利威直播趟过的坑相关推荐

  1. 对接保利威直播api-php

    对接保利威直播api-php api官方接口地址 https://help.polyv.net/index.html#/live/api/channel/operate/basic_create 文章 ...

  2. 保利威Service+战略发布会「服务+技术」开启私域直播新纪元

    植物生长离不开营养元素的供给,只有当肥料与水充分地「溶合」,才能被植物所吸收,茁壮成长. 在围绕技术+服务构建起来的SaaS体系中,这个道理同样适用. 3月22日,保利威Service+战略发布会如期 ...

  3. 保利威视频播放器功能抽取,仅作为播放课程资源使用,去除多余功能

    由于项目中所使用的场景,除了直播和回放,还有一个就是简单的课程资源播放器,然后取出整体的冗余,使用一个较为简单播放器来进行播放操作.保利威直播的demo和开发文档,在实际调试过程中,让人非常头疼,在g ...

  4. 保利威重磅开启「828 B2B企业节 · 专场峰会 」!

    流量红利触顶,企业进入[不确定]时期. 与此同时,企业服务和品牌信任的价值力量,愈发凸显.区别于流量驱动增长的不确定性,以价值驱动的增长则能给企业带来高品质.可持续的增长想象. 01 聚焦服务价值,成 ...

  5. 第三方直播云平台(保利威和阿里云)直播集成demo

    第三方直播云平台(保利威和阿里云)直播集成文档整理. 保利威: 保利威帮助中心 js demo <div id="player"></div> <sc ...

  6. “影视级”直播呈现,保利威1号演播厅与企业共建行业直播新标准 | 爱分析调研

    前言:3月22日,保利威举办了2023春季线上发布会,推出首个企业级直播基地--"1号演播厅".会上重磅发布了<2023中国企业直播应用标准>并启动"企业直播 ...

  7. 技术赋能教育直播,保利威玩转“5G+AI”

    更多精彩内容请关注我们 俗话说,人无远虑,必有近忧. 直播作为在线教育的重要手段之一,近几年在我国快速崛起,2018年出现了一个发展高潮.无论是1对1还是1对多,也无论职业教育还是传统的管理培训,在线 ...

  8. 保利威荣获「年度最佳直播服务商」!引领视频直播行业创新发展

    2022年8月12日,弯弓Digital在第四届中国营销数字化大会上颁布了「年度最佳营销数字化企业奖」.「年度营销技术机构TOP100」.「年度私域大奖」和「年度最佳营销技术单项奖」等四大奖项. 凭借 ...

  9. SaaS化MR直播正式上线!保利威开启轻量化虚拟直播时代

    今年3月份,保利威在Service+战略会上发布了SaaS化的MR直播系统. 坦白说,包括小编在内的绝大多数保利威人,都觉得这"事"没想象中的那么简单. ▲ 保利威发布SaaS化的 ...

最新文章

  1. R语言数据描述性统计(Descriptive statistics)实战:数据全局描述信息、数值数据的描述性统计(Numerical data)、离散型数据的描述性统计(Categorical)
  2. 《算法竞赛进阶指南》打卡-基本算法-AcWing 97. 约数之和:递归、快速幂
  3. Celery 启动报错 can_read() got an unexpected keyword argument timeout
  4. 新人报道,写的东西还请大神们多指导!也希望能让和我一样的同事少走弯路。...
  5. 计算图是个什么东西?一大堆的函数用法笔记
  6. Stateflow_after计时计数
  7. [Ogre] 创建Ogre项目的一劳永逸的简单办法
  8. 打包的时候如何做卸载程序
  9. 最简单的BERT模型调用方法
  10. H3CSE园区-Smart Link和Monitor Link
  11. python正弦函数幂级数展开_函数展开成正弦级数或余弦级数的奇延拓
  12. 基于MATLAB retinex的图像去雾系统
  13. C语言教师工作量管理系统
  14. 63岁老太太不远千里来传销 被玩坏的IPFS矿机游戏
  15. Windows中使用命令创建计划任务(at、schtasks)
  16. GD32f103ret6 使用HID,设备管理里,提示未知设备
  17. (海伦公式)已知三角形三条边长,求面积
  18. html5 workers,HTML5 Web Workers
  19. JDK9相比于JDK8,究竟变强了多少
  20. plustoken——区块链钱包价值不可估量

热门文章

  1. DeprecationWarning: use options instead of chrome_options self.driver = webdriver.Chrome(chrome_op
  2. java毕业设计健民中医药方网设计mybatis+源码+调试部署+系统+数据库+lw
  3. 全球及中国职业教育市场创新发展与投资决策建议报告2022版
  4. 海康设备对接sdk错误码汇总 v6.0
  5. Spring基本运行
  6. 6.824 Spring 2021 -- Lab 2A
  7. 服务器网卡网速慢怎么维护,网速慢怎么办我通过某单位内部的局域网上互联网,最近一段时间网速巨 爱问知识人...
  8. phpMyAdmin - 配置文件权限错误,不应任何用户都能修改!
  9. java web 网上商城_JavaWeb项目--网上商城 (6-2)
  10. python识别图片验证码,踩坑亲测