Closed hshm closed 3 years ago
研究了下,已经解决了一半问题:android 9(包含)以下,aab的安装包能正常加载weex页面。
原因:aab格式安装包,通过bundletool安装到手机,原apk中的文件,根据cpu等维度,拆分了。如下 即:base.apk中不再包含so文件, so文件全部在 split_config.arm64_v8a.apk中。
但代码中还是去base.apk中获取(该代码在,通过apk格式的安装包安装后,运行没问题),如下,所以导致了问题出现: WXEnvironment.java
解决:从split_config.arm64_v8a.apk中把weex相关的so复制一份到/data/data/**/cache/
测试机型适配时发现了问题:在Android 10 和 Android 11上,还是无法加载weex,其他android版本无问题。 JsFrameworkInit 没有初始化成功,日志:
最后追踪到下面这个方法没返回成功。看了会c++代码,没太懂,没思路了...,求救 mWXBridge.initFrameworkEnv(framework, assembleDefaultOptions(), crashFile, pieSupport)
最后追踪到下面这个方法没返回成功。看了会c++代码,没太懂,没思路了...,求救 mWXBridge.initFrameworkEnv(framework, assembleDefaultOptions(), crashFile, pieSupport)
framework 入参有值吗
也遇到了相同问题,有什么解决方案吗?
测试机型适配时发现了问题:在Android 10 和 Android 11上,还是无法加载weex,其他android版本无问题。 JsFrameworkInit 没有初始化成功,日志:
确认下com.taobao.weex.WXEnvironment.java是否被混淆过
aab格式之前不支持,问题我们内部在看了。
aab格式之前不支持,问题我们内部在看了。
希望我上面的对你们有帮忙,通过重新拷贝一份so文件,android 10以下没问题了,10以上有问题。
最后追踪到下面这个方法没返回成功。看了会c++代码,没太懂,没思路了...,求救 mWXBridge.initFrameworkEnv(framework, assembleDefaultOptions(), crashFile, pieSupport)
framework 入参有值吗 有值,如下:
一直以为so路径问题,通过打印C++端的代码,各种so路径又符合预期
通过进一步在C++打印日志,在关闭文件是报错:
报错信息:
尝试把 关闭文件的代码去掉,结果还是一样,初始化不成功:
weex初始化时需要执行weexjsb.so拉起js子进程。Android gradle plugin 3.3.0对aab做了优化,默认不拷贝native library至libs路径,导致weexjsb.so执行失败。可通过关闭此优化绕过。
According to the Gradle release note
When building an Android App Bundle, APKs generated from that app bundle that target Android 6.0 (API level 23) or higher now include uncompressed versions of your native libraries by default. This optimization avoids the need for the device to make a copy of the library and thus reduces the on-disk size of your app. If you'd rather disable this optimization, add the following to your gradle.properties file:
android.bundle.enableUncompressedNativeLibs = false
已经验证,上述方案能解决问题
Describe the bug
google play 要求8月份新上架的app,须采用aab格式(非apk)发布。 生成官方playgroud的aab格式安装包,无法正常加载weex页面
To Reproduce
Environment
Expected behavior
正常展示页面
Screenshots
Additional context