我的应用程序是与Cordova和Crosswalk一起开发/发布的。 Crosswalk为ARM cpus生成一个apk,为x86 cpus生成另一个。
此刻,当我将我的ARM apk上传到Play商店然后尝试上传x86时,它阻止我这样做并显示一条消息,说我不能拥有两个具有相同版本代码的apk。
然而,似乎需要使用" Application.mk"文件,Cordova项目结构默认情况下似乎没有。
如何在我的apks中包含Application.mk文件,以便ARM和具有相同版本代码的x86都可以上传到Play商店?
答案 0 :(得分:22)
这是绝对可能的。 此功能接收名称: Multiple APK
您无需使用'Application.mk'
流程很简单:
使用多个APK有一些规则,但如果您使用cordova crosswalk生成的文件,则无需担心。
您使用版本代码描述的问题发生,因为每个应用必须具有不同的版本代码。在我的情况下,我使用离子框架(扩展cordova),并在构建过程中,它为每个apk生成了不同的版本代码,所以我没有问题。如果不适合您,您可以尝试直接在AndroidManifest.xml文件中更改de android:versionCode 。 以下是我的清单的样子:
<manifest
android:hardwareAccelerated="true"
android:versionCode="102"
android:versionName="0.1.2"
package="br.org.yyyyyyy.xxxxxxxxxx"
xmlns:android="http://schemas.android.com/apk/res/android">
在我的情况下,arm7 apk,
机器人:的versionCode = “102”
在x86 apk中
机器人:的versionCode = “104”
参考文献:
答案 1 :(得分:1)
我做的很简单。主要v代码的示例是102,因此您使用102 v代码构建第一个arm并上载。在上传运行之前,您可以将清单和构建等级中的v代码更改为103并构建另一个x86。简单易用。
答案 2 :(得分:1)
我认为过去一年情况发生了变化。我使用了相同的版本代码并上传了两个apks(一次一个 - 以正常方式)。 Google Play会自动检测到它们是针对不同的原生平台,并允许两者都投入生产。
答案 3 :(得分:0)
cordova-crosswalk doc指示如何制作适用于arm和x86的apk。问题是它制作了一个巨大的apk。
如果你真的想制作两个apks,你可以尝试(抱歉还没有测试)在文件夹platforms / android / jni中创建Application.mk文件
对于arm,您可以将此行放在Application.mk:
中APP_ABI := armeabi armeabi-v7a
对于intel x86:
APP_ABI := x86
您必须更改AndroidManifest.xml以使每个平台具有不同的版本(按照您提供的链接中的说明进行操作)。
小心,如果你再次运行cordova build android,它可能会取代所有平台/ android的内容,你的更改将会丢失。
构建项目使用
platforms\android\cordova\build.bat -release
而不是
cordova build android --release