Android应用程序包 – > apk不包含必需的本机库

Android应用程序包 – > apk不包含必需的本机库,第1张

概述我正在使用新的应用包格式(aab)发布应用.该应用程序包括一些armeabi-v7a的本机库.当我在arm64-v8a架构上通过GooglePlay安装应用程序时,它不包含没有arm64-v8aso文件的本机库.根据这个https://stackoverflow.com/a/39622499/534471,一个armeabi-v7a库应该在arm64-v8a设备上运行(

我正在使用新的应用包格式(aab)发布应用.该应用程序包括一些armeabi-v7a的本机库.当我在arm64-v8a架构上通过Google Play安装应用程序时,它不包含没有arm64-v8a so文件的本机库.

根据这个https://stackoverflow.com/a/39622499/534471,一个armeabi-v7a库应该在arm64-v8a设备上运行(当它通过adb安装时工作正常,所以它确实可以正常工作).

Google Play控制台按体系结构,屏幕密度等显示不同的apks.从apk大小我可以清楚地知道哪些不包含本机库.我还使用本机libs监视器应用程序来分析已安装的apk,它显然不包括我需要的本机库(如果应用程序有arm64-v8a so文件,它包括arm64-v8a本机库,但如果只有armeabi则不包括-v7a版).

我的gradle构建文件包含用于bundle配置的这一小段代码:

    bundle {        language {            enableSplit = false        }        density {            enableSplit = true        }        abi {            enableSplit = true//            include 'armeabi', 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'        }    }@H_419_12@

现在这里是我的问题:有没有办法告诉构建工具在每个apk中包含“次佳”本机库,其次最好是在特定架构上运行的最接近的版本?

PS:如果我为abi设置了enableSplit = false,那么它将包含本机库(正如预期的那样),但遗憾的是包括x86在内的所有平台都是20MB大…

对于那些没有看过Google Play如何将应用程序包拆分为apks的人,这里有一个截图:


解决方法:

没有必要告诉工具提供下一个最好的工具,应该自动完成.如果设备报告也支持armeabi-v7a,它应该会收到包含它的APK.

编辑:

鉴于您的屏幕截图,您的应用程序似乎为arm64-v8a架构提供了本机库,因此将提供arm64-v8a库,而不是armeabi-v7a库.

另请注意,一个设备无法为同一个应用程序加载来自不同体系结构的库,即您不能指望某些库以64位加载,而其他一些库则以32位加载.即使使用包含所有ABI的“胖”APK,AndroID平台也只会在安装您的应用程序时选择一个ABI并丢弃所有其他文件,因此从您为arm64-v8a提供至少一个库的那一刻起,没有任何armeabi -v7a库将被加载到arm64-v8a设备上.

编辑:

如果无法为该体系结构提供所需的本机库,则应考虑从应用程序中排除某些ABI.这可以使用gradle配置中的abiFilters块来实现:

ndk {abiFilters’armeabi-v7a’,’x86′}

总结

以上是内存溢出为你收集整理的Android应用程序包 – > apk不包含必需的本机库全部内容,希望文章能够帮你解决Android应用程序包 – > apk不包含必需的本机库所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1104674.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)