3

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

是否有某些功能或 GL 我可以假设适用于所有 arm-v7 处理器,但不适用于 arm-v6 或 arm-v5?有没有办法将我的应用程序转换为 NDK 仅针对 Application.mk 中的一个选项?如果我只使用不同的版本名称(IE 1.0-arm5、1.0-arm7)和不同的 apk,只在 lib 中使用 armeabi 和 armeabi-v7a 目录,那会起作用吗?根据http://developer.android.com/google/play/publishing/multiple-apks.html我必须在 android 清单中有其他不同的东西才能工作。

4

3 回答 3

1

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

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

于 2013-03-20T05:02:47.970 回答
1

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

于 2013-09-03T21:34:17.870 回答
0

您应该订购版本代码,以便在每台设备上运行性能最佳的 APK。例如,对版本代码进行排序,使 x86 APK 的版本代码最高,其次是 ARMv7,然后是 ARMv5TE。因此,x86 APK 将首选用于 x86 设备,而 ARMv7 APK 将首选用于 ARMv7 设备。

于 2016-08-15T12:40:08.157 回答