Android Market多个APK …不同的CPU架构怎么样?

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

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

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

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

Related of "Android Market多个APK …不同的CPU架构怎么样?"

好吧,最后Google Play允许使用Multi-apk定位 !

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

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

APP_ABI := armeabi armeabi-v7a x86 

这将编译所有三个。

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

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

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

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