安卓市场多APK..不同的CPU架构如何

  • 本文关键字:CPU 卓市 APK android android-ndk
  • 更新时间 :
  • 英文 :


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

有人知道如何将不同的APK上传到Android市场,每个APK都包含专门为不同CPU架构编译的库吗?

我还没有尝试过这一点,似乎有点多余,但我们能在一个APK中包含多个编译库吗?

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

好吧,Google Play终于允许多apk定位了!

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

除非你的应用程序有很多代码,否则我建议你只放android目前支持的三种架构的本地代码,armv5、armv7和x86。它将是apk代码部分大小的三倍,但3*(一个小数字(仍然是一个小数目。您可以通过修改jni/Application.mk文件来完成此操作,或者如果您还没有创建它,则可以创建它,并添加行:

APP_ABI := armeabi armeabi-v7a x86

这将编译所有三个。

请注意,当前的ndk(ndkr6(有一个错误,它试图将x86代码链接到arm代码。如果你得到了AOSP项目source.android.com,或者你可以等到谷歌发布r6b,它很可能已经修复了。否则,如果你不想这样做,你可以暂时放弃x86部分,在没有x86代码的情况下发布你的应用程序,并在新的ndk发布时推送更新。我还不知道有多少流行的设备使用x86指令。

请参阅Android文档中的多APK支持。这详细介绍了发布同一产品/应用程序的多个APK的一些细节。

至于NDK的细节,如前所述,您可以在Android.mk的APP_ABI值中使用多个平台/ABI。

在新的Play store开发者控制台中,如果您想添加多个APK,则必须使用相同的包名称和相同的密钥库密钥,但版本代码不同。你有发布应用程序,然后首先上传Apk,例如mobile_release和rollout用于生产,之后当你上传另一个Apk时,你应该在以前的Apk上选择RETAIN选项,也可以使用当前的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。这将提供市场筛选,因此单个用户只能看到您的应用程序的一个版本。

最新更新