Android 9.0系统软件进入视频界面发生闪退

前提:
软件的视频模块以海康萤石云SDK为基础开发。
之前开发时虽然配置 targetSdkVersion=28 ,但是一直是使用Android 6.0/7.0的系统进行调试。最近在使用9.0系统测试时发现视频模块一点击进入播放就会发生闪退,于是对这个模块进行修复。

经过调试发现,发生闪退是因为:缺少libstlport_shared.so(具体报错信息就不粘贴了)。好吧,自己对so库完全不了解,不知从何下手,只能去网上搜索一下看看这个so库有没有可以下载。经过搜索发现,这个so库是armeabi-v7a架构特有的,因为模拟器是x86系统,不能应用arm架构下的so库文件,所以发生报错。

模拟器不行,就只能拿自己的手机测试了。首先看一下自己的手机是不是armeabi-v7a架构(使用adb shell getprop ro.product.cpu.abi命令查看)
在这里插入图片描述
自己的手机比模拟器好的一点是不用转架构(根本转不了,Genymotion-ARM-Transaction包根本没用),但也不是armeabi-v7a架构。

到萤石云的开发平台看了一下最新的SDK,支持Android 9.0 、支持arm64-v8a,真是一个好消息。
直播UKIT SDK
APP应用全SDK进入app的build.gradle将原来的依赖包版本替换为最新的2.1和4.8.8
在这里插入图片描述
编译发生报错:程序包javax.validation.constraints不存在,原来的 ezviz-sdk:4.8.4 版本中是包含了 javax.validation.constraints 包的,在两个类中引用的 @NonNull 注解属于这个包。但这个错误不是大问题,我们将 @NonNull 的引用包改为 org.jetbrains.annotations.NotNull 即可。
在这里插入图片描述再次编译,发生报错:
在这里插入图片描述这个错误问题可就大了,用了各种方法均不行,看到别人的博客说考虑是否为依赖冲突,自己看了一下导入的依赖,没有重复的。好吧,试着去看一看依赖树(使用gradlew -q app:dependencies命令查看),看了半天也没看出啥问题,试着去统一引用包的版本号,也不行。

最后看了别人的一篇文章,说是因为其中一个依赖A会引用另一个依赖B,但是自己引用的依赖B的版本和依赖A中的版本不一致,导致冲突。回头看了一下记录的依赖的版本,ezuikit:2.1 会用到 ezviz-sdk:4.8.3 ,和自己引用的 ezviz-sdk:4.8.8 的版本发生了冲突。看来是找到了原因。

既然冲突,则试着删除 ezviz-sdk:4.8.8 (不可行,删除后仍然闪退)、删除 ezuikit:2.1 (,不可行,删除后EZUIPlayer类不可用)、回退 ezuikit至2.0版本(不可行,仍然使用 ezviz-sdk:4.8.3)。既然都不行,那就试着直接下载SDK安装吧,不让APP自动下载了。

在萤石云开发平台下载EZUIKit_Andnroid_v2.1.build20190617.zipAndroid_v4.8.8.build20190723.zip两个包,按照说明文档将lib目录下的jar包以及armeabi-v7a、arm64-v8a目录下的内容均拷贝至app下的libs目录
在这里插入图片描述
在build.gradle中删除对萤石云SDK的引用,按照说明文档开启NDK过滤:
在这里插入图片描述
编译通过,调试时发生闪退,原因为NoClassDefFoundError: Failed resolution of: Lorg/apache/http/impl/client/DefaultHttpClient,这个在萤石云的SDK接入文档中有写,在AndroidMenifest.xml中加入如下代码:

<uses-library
    android:name="org.apache.http.legacy"
    android:required="false" />

编译执行,成功修复该BUG。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值