上一篇文章主要介绍了怎样在APP内部机成腾讯TBS浏览服务来满足浏览文件的需求,那么在集成TBS浏览服务时候会遇到一些问题导致不能正常使用浏览服务,或者在一些高版本手机上不能使用的情况,下面就将我个人在集成TBS的时候遇到的问题汇总在下面:
1.64位手机无法加载x5(Android studio中需要的配置)
(1)打开对应module中的build.gradle文件,在文件的android{}中的defaultConfig{}里(如果没有defaultConfig{}则手动添加)添加如下配置: ndk{abiFilters "armeabi"}或者ndk{abiFilters "armeabi-v7a"},如果配置后编译报错,那么需要在gradle.properties文件中加上Android.useDeprecatedNdk=true;
(2)找出build.gradle中配置的so加载目录:jniLibs.srcDir:customerDir,如果没有该项配置则so加载目录默认为:src/main/jniLibs,需要将.so文件都放置在so加载目录的armeabi文件夹下(没有该目录则新建一个,AP中没有使用到.so文件则需要拷贝任意一个32位的so文件到该目录下,如果没有合适的so可以到官网http://x5.tencent.com/tbs/sdk.html下载官网“SDK接入示例“,拷贝对应目录下的liblbs.so文件),so加载目录请只保留armeabi或者armeabi-v7a。
defaultConfig {
……
//X5兼容64位手机
ndk {
abiFilters "armeabi-v7a"
}
}
2.targetAPI为Android P时无法下载内核
我在集成的时候,targetAPI为28 ,改成27后按照下面操作解决的。
由于内核下载安装和查询是否可用需要向后台发送请求,目前还有部分请求为http格式,当targetAPI为28时非Https请求将会被block,会导致部分内核功能异常。您可以手动降低targetAPi到27及以下或者在您的AndroidManifst.xml中的Application标签中添加
android:networkSecurityConfig="@xml/network_security_config"
并在app的res/xml目录中添加network_security_config.xml文件,文件内容为:
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true" />
</network-security-config>
3.非wifi下内核无法下载
如果在非wifi下仍需要下载内核,请使用在Application的onCreate()里加入QbSdk.setDownloadWithoutWifi(true);
4.在Android P机型遇到org.apache包名找不到的crash
在 Android 6.0 中,我们取消了对 Apache HTTP 客户端的支持。 从 Android 9 开始,默认情况下该内容库已从 bootclasspath 中移除且不可用于应用。由于Android P系统在targetAPI为28时默认情况下apache库已从 bootclasspath 中移除, 要继续使用 Apache HTTP 客户端,以 Android 9 及更高版本为目标的应用,只需要在AndroidManifest的application节点内添加以下配置即可:
拥有最低 SDK 版本 23 或更低版本的应用需要 android:required="false" 属性, 因为在 API 级别低于 24 的设备上,org.apache.http.legacy 库不可用。 (在这些设备上,Apache HTTP 类在 bootclasspath 中提供。)
<uses-library
android:name="org.apache.http.legacy"
android:required="false" />
我暂时遇到了上述问题,按照文中描述的解决方案成功集成了TBS浏览服务。如果您也在集成中遇到了同样的问题可以参考一下。如果遇到了其他问题,欢迎提出,我们共同探讨解决。