所以我有一个.so包含在一些版本中但不包含在其他版本中。
我的prebuild脚本删除了.so,关联的.jar从build.gradle中删除了库。
图书馆来自第三方,我无法控制要求x86或arm-v7。它仅供我使用。
当我在没有库支持的情况下构建时,我在Xamarin测试中遇到错误,即没有x86支持apk。
实际控制apk支持abi的是什么。
答案 0 :(得分:2)
Xamarin开发人员门户网站上的Using Native Libraries
文档解释了其中的一半:
https://developer.xamarin.com/guides/android/advanced_topics/using_native_libraries/
您的Android应用程序支持的ABI由您的APK中的.so文件的存在决定,在lib/<ABI>
文件夹下,ABI可以是armeabi,armeabi-v7a,arm64-v8a,mips中的一个或多个,mips64,x86,x86_64(当前七个ABI)。
我个人使用Google Play商店中的一个应用程序来帮助协助部署哪些文件:
https://play.google.com/store/apps/details?id=com.xh.nativelibsmonitor.app
所以会发生的是大多数设备通常支持多个ABI。因此,您将获得Android Package Manager用于安装设备所喜欢的.so文件的受支持ABI列表。
基本上,此处的最佳做法是确保将优化的库放在上面列出的每个<ABI>
文件夹中。只需要知道,当应用程序安装在设备上时,只会安装一个受支持的体系结构。
非常感谢http://ph0b.com/android-abis-and-so-files/作为人类可读的资源。
否则提供更多技术资源:https://developer.android.com/ndk/guides/abis.html
答案 1 :(得分:0)
事实证明,我的预构建脚本实际上并没有删除.so文件。
是
rm -rf / core / src / main / jniLibs
不
rm -rf core / src / main / jniLibs