使用人行横道为 32 位和 64 位平台构建多个 APK 时,APK 版本代码顺序不正确
Incorrect APKs versionCode order when building multiple APKs for both 32bit and 64 bit platforms with crosswalk
我需要为 32 位(armeabi-v7a 和 x86)和 64 位(arm64-v8a 和 x86_64)平台构建 ionic/cordova 应用程序。我使用命令 ionic build android --release
和 ionic build android --release --xwalk64bit
构建了四个单独的 APK
一切顺利,除了版本代码(版本设置为 0.0.11)有点偏离 - 见下文
问题是 x86 和 x86_64 的版本代码必须高于 ARM apk。这是必需的,因为 x86 设备能够处理 ARM 库,但没有 ARM 设备能够处理 x86 库。所以我们一定要保持x86 APK的版本码高于ARM apk的版本码,正确的APK才会去正确的设备。
这是我正在寻找的(以及我最终设法创建的)- 见下文
问题是versionCode由build.gradle设置并由crosswalk mobile-xwalk.gradle[=33=修改] 使用我上面描述的构建方法给出了错误的版本。我尝试在 config.xml 中使用 android-versionCode 参数并使用 cdvVersionCode for build.gradle(参见 http://cordova.apache.org/docs/en/6.x/guide/platforms/android/index.html#configuring-gradle)但运气不好。
我最终通过手动更改 mobile-xwalk.gradle 来为 64 位 apk 设置正确的版本代码来解决问题(如我的第二个屏幕截图所示)。这对我来说似乎不是最佳解决方案
问题 - 有没有更好的方法来解决这个问题?
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 就像看到的那样......这段代码部分来自 platforms/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 问题
我需要为 32 位(armeabi-v7a 和 x86)和 64 位(arm64-v8a 和 x86_64)平台构建 ionic/cordova 应用程序。我使用命令 ionic build android --release
和 ionic build android --release --xwalk64bit
构建了四个单独的 APK
一切顺利,除了版本代码(版本设置为 0.0.11)有点偏离 - 见下文
问题是 x86 和 x86_64 的版本代码必须高于 ARM apk。这是必需的,因为 x86 设备能够处理 ARM 库,但没有 ARM 设备能够处理 x86 库。所以我们一定要保持x86 APK的版本码高于ARM apk的版本码,正确的APK才会去正确的设备。
这是我正在寻找的(以及我最终设法创建的)- 见下文
问题是versionCode由build.gradle设置并由crosswalk mobile-xwalk.gradle[=33=修改] 使用我上面描述的构建方法给出了错误的版本。我尝试在 config.xml 中使用 android-versionCode 参数并使用 cdvVersionCode for build.gradle(参见 http://cordova.apache.org/docs/en/6.x/guide/platforms/android/index.html#configuring-gradle)但运气不好。
我最终通过手动更改 mobile-xwalk.gradle 来为 64 位 apk 设置正确的版本代码来解决问题(如我的第二个屏幕截图所示)。这对我来说似乎不是最佳解决方案
问题 - 有没有更好的方法来解决这个问题?
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 就像看到的那样......这段代码部分来自 platforms/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 问题