X5核心接入: TBS:initX5Core bmttwebview.so is 32-bit instead of 64-bit 问题解决方案

在Android Studio项目中遇到TBS X5内核加载失败的问题,错误提示bmttwebview.so是32位而非64位。分析表明需要将运行环境改为32位。解决方案包括在build.gradle中添加abiFilters和在gradle.properties中设置android.useDeprecatedNdk为true。如果问题依然存在,可以在libs目录下创建armeabi文件夹并放入32位SO文件。卸载旧版APP后再安装新版本可能会有所帮助。

原问题是这样的:

TBS:initX5Core -- loadSucc: false; exception: java.lang.reflect.InvocationTargetException; cause: java.lang.UnsatisfiedLinkError: dlopen failed: "/data/data/com.tencent.mm/app_tbs/core_share bmttwebview.so" is 32-bit instead of 64-bit
                                                              at java.lang.Runtime.load(Runtime.java:332)
                                                              at java.lang.System.load(System.java:1069)
                                                              at com.tencent.smtt.webkit.ContextHolder.loadMttWebViewLib(Unknown Source)
                                                              at com.tencent.smtt.webkit.ContextHolder.setContext(Unknown Source)
                                                              at com.tencent.smtt.webkit.ContextHolder.setContext(Unknown Source)
                                                              at java.lang.reflect.Method.invoke(Native Method)
                                                              at com.tencent.tbs.x5core.X5CoreInit.setContextHolderParams(Unknown Source)
                                                              at com.tencent.tbs.tbsshell.TBSShell.initX5CoreImpl(Unknown Source)
                                                              at com.tencent.tbs.tbsshell.WebCoreProxy.canUseX5(Unknown Source)
                                                              at java.lang.reflect.Method.invoke(Native Method)
                                                              at com.tencent.smtt.sdk.bh.a(Unknown Source)
                                                              at com.tencent.smtt.sdk.bg.a(Unknown Source)
                                                              at com.tencent.smtt.sdk.f.run(Unknown Source)
02-28 17:03:04.718 29760-30885/net.huayingdai E/NetworkUtilities: [MTK_net]ss.ss_family:10
02-28 17:03:04.718 29760-30885/net.huayingdai E/NetworkUtilities: [MTK_net]ss.ss_family:2
02-28 17:03:04.718 29760-30885/net.huayingdai E/NetworkUtilities: [MTK_net]ss.ss_family:2
02-28 17:03:04.719 29760-30885/net.huayingdai E/NetworkUtilities: [MTK_net]ss.ss_family:2
02-28 17:03:04.724 29760-30767/net.huayingdai E/X5CoreEngine: TBS:mCanUseX5 is false --> report


分析:

官方demo及自己的项目,在Eclipse下运行都正常,在Android Studio下运行会出现上述问题。
从"is 32-bit instead of 64-bit"可以看出,当前so文件是32位的,而期待的是64位的so文件,同时说明当前应用启动环境是64位。

解决方案:

根本点就是如何把当前的运行环境变为32位的。
一般可通过下面两步解决:
1、在 build.gradle下的defaultConfig添加:ndk {abiFilters "armeabi", "armeabi-v7a", "x86", "mips" }
2、在gradle.properties中加入android.useDeprecatedNdk=true
若上述方案还未解决问题,请尝试在libs目录下创建armeabi文件夹,并拷贝一个 32位的so文件进入(我是直接复制eclipse下的liblbs.so进来的),此后测试,成功出现 双水滴样式。


我处理这个问题有些曲折,上述方案很早的时候就试过,但是没有效果,感觉可能是APP调试安装的时候有问题,建议先卸载原APP,再安装新的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值