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

被折叠的 条评论
为什么被折叠?



