我需要为 32 位(armeabi-v7a 和 x86)和 64 位(arm64-v8a 和 x86_64)平台构建 ionic/cordova 应用程序。我使用命令 ionic build android --releaseionic build android --release --xwalk64bit 构建了四个单独的 APK
一切顺利,除了 versionCode(版本设置为 0.0.11)有点偏离 - 见下文
cordova - 使用人行横道为 32 位和 64 位平台构建多个 APK 时,APK 版本代码顺序不正确-LMLPHP

问题是 x86 和 x86_64 必须具有比 ARM apk 更高的 versionCode。这是必需的,因为 x86 设备能够处理 ARM 库,但没有能够处理 x86 库的 ARM 设备。所以我们必须保持x86 APK的版本号高于ARM apk的版本号,正确的APK会去正确的设备。

这是我正在寻找的(以及我最终设法创建的)-见下文
cordova - 使用人行横道为 32 位和 64 位平台构建多个 APK 时,APK 版本代码顺序不正确-LMLPHP

问题是 versionCode 由 build.gradle 设置并由 crosswalk mobile-xwalk.gradle 修改,它使用我上面描述的构建方法给出了错误的版本。我尝试在 config.xml 中使用 android-versionCode 参数设置 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 中似乎有一个错误。
此代码部分来自平台/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 问题

10-08 06:51