针对不同ABI libs的多个APK

时间:2013-03-20 04:09:09

标签: android android-ndk apk

我正在使用相当大(15 MiB)的预编译库,在arm5和arm7版本之间具有显着的加速。我的应用程序不是NDK应用程序,因此我无法在Application.mk AFAIK中声明APP_ABI。我的目标SDK至少是android 2.3,虽然我个人还没有看到一个不支持armeabi-v7a的2.3+设备,根据http://androidhardwares.com/android-hardware-development/android-hardware-requirements/我应该只假设armeabi。

我可以假设某些功能或GL可用于所有arm-v7处理器但不适用于arm-v6或arm-v5吗?有没有办法将我的应用程序转换为NDK JUST for Application.mk中的那个选项?如果我只是使用不同的版本名称(IE 1.0-arm5,1.0-arm7)和不同的apks只有lib中的armeabi和armeabi-v7a目录可以吗?根据{{​​3}},我必须在Android清单中有其他不同的东西才能发挥作用。

3 个答案:

答案 0 :(得分:1)

“我正在使用库” - 这是一个原生库(C / C ++)吗?如果是,那么您的应用程序就是NDK应用程序,即使您没有使用ndk-build构建此库作为常规构建过程的一部分;即使它是由一些不同的本机工具链构建的,与NDK完全无关;即使它是一个你根本不建立的第三方图书馆。

因此,在Apllication.mk中设置APP_ABI没有问题。我相信这会解决你的问题。

答案 1 :(得分:1)

解决方案是在AndroidManifest.xml中将versionCode设置为更高臂数的更高数字。如果您的版本是1.0.0并且您的版本代码是100,则将其更改为第5组的1005和第7组的1007。这样,当用户在Play商店中看到它时,如果他们的设备支持,则第7版将下载因为它有更高的版本代码。只需确保在上传到开发人员控制台时首先上传较低版本的代码。

答案 2 :(得分:0)

您应该订购版本代码,以便在每台设备上运行性能最佳的APK。例如,订购版本代码,以便x86 APK具有最高版本代码,然后是ARMv7,然后是ARMv5TE。因此x86 APK将首选x86设备,ARMv7 APK首选ARMv7设备。