Android Market multiple APK …不同CPU架构如何?

所以我想我现在可以上传我的应用程序使用不同的NDK编译库为目标的CPU架构,但似乎这是不可能的。

任何人都知道如何上传到Android Market不同的APK,每个APK都包含针对不同CPU架构专门编译的库?

我没有尝试过,看起来像一个空间的腰,但我们可以在一个APK包括多个编译的库?

更新:
显然,当用户安装apk时,不支持的库将不会被安装在设备上。 这是好的,但用户仍然需要下载整个apk浪费带宽。

Solutions Collecting From Web of "Android Market multiple APK …不同CPU架构如何?"

那么,最后Google Play允许进行Multi-apk定位 !

“我们为使用多个APK支持的应用程序添加了新的function,现在您可以将每个APK定位到特定的本地平台。”

除非你有一堆你的应用程序的代码,否则我会build议把android支持的三种体系结构的本机代码和armv5,armv7和x86。 这将是你的apk的代码部分的三倍,但3 *(一个小数字)仍然是一个小数字。 你可以通过修改你的jni / Application.mk文件,或者如果你还没有创build它,然后添加下面这行:

APP_ABI := armeabi armeabi-v7a x86 

这将为所有三个编译。

请注意,当前的ndk(ndk r6)存在一个错误,它试图将x86代码链接到arm代码。 如果你得到AOSP项目source.android.com,这个问题就解决了,或者你可以等到谷歌发布r6b,这可能会有修复。 否则,如果你不想这样做,那么现在就可以不使用x86代码,然后在没有x86代码的情况下释放你的应用程序,并在新的ndk出来时推送更新。 我还没有意识到许多使用x86指令的stream行设备。

请参阅Android文档中的多个APK支持 。 这部分详细介绍了释放同一产品/应用程序的多个APK的具体细节。

至于NDK细节,正如已经提到的那样,您可以在Android.mk的APP_ABI值中使用多个平台/ ABI。

在新的Play商店开发人员控制台中,如果要添加多个APK,则必须使用相同的软件包名称和相同的密钥存储库密钥,但使用不同的版本代码。 你已经发布的应用程序,然后首先上传Apk例如mobile_release和生产的推出,当你上传另一个apk时,你应该select与以前的APK保持选项也当前的APK。

  android { // To create different apk per abi splits { abi { enable true reset() include 'armeabi', 'armeabi-v7a', 'x86' universalApk true } } } import com.android.build.OutputFile // Map for the version code ext.versionCodes = ['armeabi': 1, 'armeabi-v7a': 2, 'x86': 3] android.applicationVariants.all { variant -> // assign different version code for each output variant.outputs.each { output -> int abiVersionCode = project.ext.versionCodes.get(output.getFilter(OutputFile.ABI)) ?: 0 output.versionCodeOverride = (abiVersionCode * 1000) + android.defaultConfig.versionCode } } 

您可以在AndroidManifest.xml为每个单独编译(和重新打包)的应用程序声明supports-gl-texture 。 这将提供市场过滤,所以一个用户只会看到一个版本的应用程序。