Android NDK 和 Google Play 过滤

标签 android android-ndk android-manifest google-play apk

Google Play 应用商店会自动将您的应用过滤到具有兼容 CPU 架构的设备。例如。如果您有一个仅为 ARMv5 编译的库,则您的应用程序将仅显示在具有 ARMv5 或 ARMv7 处理器的设备上。

如果我有 Java 替代方案,并且希望非 ARM 设备也能下载我的应用程序怎么办? 例如。我在尝试加载外部库时遇到异常,并在 Dex 字节码 (Java) 中实现了一个可行的替代方案。

当我上传 .apk 时,Android 开发者控制台显示: “此 apk 请求 1 个将用于 Google Play 过滤的 native 平台。 武装”

我需要为 x86 和 MIPS 编译虚拟库吗?然后在我的 Java 代码中,检查处理器架构以了解我是否可以实际使用该库?应该有更好的解决方案。

据我所知,Manifest 中没有任何关于 CPU 架构的内容,而且我在 Developer Console 中找不到关闭此过滤器的方法。

希望比我更了解 Google Play 过滤和 NDK 的人知道答案。

最佳答案

虽然捕获 loadLibrary 失败将适用于任何设备(至少我尝试过的所有设备,包括 GTV),但如果 apk 中不存在该平台的 ABI,Play Store 将不会显示在设备上。

来自文档 ( http://developer.android.com/guide/appendix/market-filters.html ):包含针对特定平台(例如 ARM EABI v7 或 x86)的 native 库的应用程序仅在支持该平台的设备上可见。

理论上,为所有平台构建将能够针对所有设备,但实际上有一些设备(如 Google Tv)报告没有 ABI,这意味着只有没有 native 代码的 apk 才会出现在 Play 商店中在那些设备上。但是,您可以使用多个 apk,1 个没有 native 代码,1 个用于所有支持 native 代码的平台。

您可以在此处阅读有关多 apk 支持的信息:http://developer.android.com/guide/market/publishing/multiple-apks.html

关于Android NDK 和 Google Play 过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10846758/

相关文章:

java - 在 Android Studio 1.5 中设置 NDK 开发

android - 将文件复制到 Android 设备内部区域需要 list 权限吗?

android - Android 中的 Qibla 指南针

java - 在数组中初始化数组

android - 在 Android 中购买

android - Android NDK 中的 Openssl X509_set_pubkey() 崩溃

ffmpeg - 如何解决在为 android 构建 ffmpeg-with-libx264-enabled 时找不到 libx264?

android - 如果应用程序关闭,如何停止 BroadcastReceiver

permissions - Android Wear 新的(不需要的)权限

Android 应用程序仅在发布 APK 时崩溃