我需要为32位(armeabi-v7a和x86)和64位(arm64-v8a和x86_64)平台构建ionic / cordova应用程序。我使用命令ionic build android --release
和ionic build android --release --xwalk64bit
构建了四个单独的APK
一切顺利,只是versionCode(版本设置为0.0.11)稍微偏离 - 见下文
问题是x86和x86_64必须具有比ARM apks更高的versionCode。这是必需的,因为x86设备能够处理ARM库,但没有ARM设备能够处理x86库。因此,我们必须保持x86 APK的版本代码高于ARM apk的版本代码,并且正确的APK将转到正确的设备。
问题是versionCode是由 build.gradle 设置并由 crosswalk mobile-xwalk.gradle 修改的,它使用我上面描述的构建方法提供了错误的版本。我尝试使用 config.xml 中的 android-versionCode 参数设置versionCode,并使用 cdvVersionCode 设置build.gradle(请参阅http://cordova.apache.org/docs/en/6.x/guide/platforms/android/index.html#configuring-gradle )但没有运气。
我最终通过手动更改 mobile-xwalk.gradle 来为64位apks设置正确的versionCodes来解决问题(如我的第二个屏幕截图所示)。这看起来不像是我的最佳解决方案
问题 - 有没有更好的方法来解决这个问题?
答案 0 :(得分:3)
似乎cordova-plugin-crosswalk-webview中存在一个错误。 此代码部分来自platforms / android / build.gradle(用于构建32位):
productFlavors {
armv7 {
versionCode defaultConfig.versionCode*10 + 2
ndk {
abiFilters "armeabi-v7a", ""
}
}
x86 {
versionCode defaultConfig.versionCode*10 + 4
ndk {
abiFilters "x86", ""
}
}
all {
ndk {
abiFilters "all", ""
}
}
}
这里是 versionCode * 10 如图所示......此代码部分来自平台/ android / cordova-plugin-crosswalk-webview / YOUR_APP_SUFFIX -xwalk.gradle(用于构建64位):
productFlavors {
x86_64 {
versionCode defaultConfig.versionCode + 6
ndk {
abiFilters "x86_64", ""
}
}
arm64 {
versionCode defaultConfig.versionCode + 9
ndk {
abiFilters "arm64-v8a", ""
}
}
}
这里只是 versionCode 。所以我通常会将第二个文件更改为versionCode * 10以解决PlayMarket问题