Android 是什么决定了用于构建的 abi
On Android what determines the abi that is used for building
所以我有一个 .so,它包含在某些构建中,但不包含在其他构建中。
我的预构建脚本删除了 .so,关联的 .jar 从 build.gradle 中删除了库。
该库来自第 3 方,我无法控制请求 x86 或 arm-v7。只提供给我。
当我在没有库支持的情况下进行构建时,我在 Xamarin 测试中遇到错误,指出 apk 不支持 x86。
实际控制 apk 支持哪些 abi。
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。因此,您将获得支持的 ABI 列表,Android 包管理器使用这些 ABI 来安装设备喜欢的 .so 文件。
基本上,这里的最佳做法是确保将优化的库放入上面列出的每个 <ABI>
文件夹中。只知道当应用程序安装到设备上时,只会安装一种受支持的架构。
非常感谢 http://ph0b.com/android-abis-and-so-files/ 作为人类可读的资源。
事实证明,我的预构建脚本实际上并没有删除 .so 文件。
是
rm -rf /core/src/main/jniLibs
不是
rm -rf core/src/main/jniLibs
所以我有一个 .so,它包含在某些构建中,但不包含在其他构建中。
我的预构建脚本删除了 .so,关联的 .jar 从 build.gradle 中删除了库。
该库来自第 3 方,我无法控制请求 x86 或 arm-v7。只提供给我。
当我在没有库支持的情况下进行构建时,我在 Xamarin 测试中遇到错误,指出 apk 不支持 x86。
实际控制 apk 支持哪些 abi。
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。因此,您将获得支持的 ABI 列表,Android 包管理器使用这些 ABI 来安装设备喜欢的 .so 文件。
基本上,这里的最佳做法是确保将优化的库放入上面列出的每个 <ABI>
文件夹中。只知道当应用程序安装到设备上时,只会安装一种受支持的架构。
非常感谢 http://ph0b.com/android-abis-and-so-files/ 作为人类可读的资源。
事实证明,我的预构建脚本实际上并没有删除 .so 文件。
是
rm -rf /core/src/main/jniLibs
不是
rm -rf core/src/main/jniLibs