使用人行横道为32位和64位平台构建多个APK时,APKs版本序列不正确

时间:2016-09-08 11:07:53

标签: cordova ionic-framework android-gradle crosswalk-runtime crosswalk

我需要为32位(armeabi-v7a和x86)和64位(arm64-v8a和x86_64)平台构建ionic / cordova应用程序。我使用命令ionic build android --releaseionic build android --release --xwalk64bit构建了四个单独的APK 一切顺利,只是versionCode(版本设置为0.0.11)稍微偏离 - 见下文 wrong versionCodes

问题是x86和x86_64必须具有比ARM apks更高的versionCode。这是必需的,因为x86设备能够处理ARM库,但没有ARM设备能够处理x86库。因此,我们必须保持x86 APK的版本代码高于ARM apk的版本代码,并且正确的APK将转到正确的设备。

这是我正在寻找的(以及我最终设法创建的内容) - 见下文 correct versionCodes

问题是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来解决问题(如我的第二个屏幕截图所示)。这看起来不像是我的最佳解决方案

问题 - 有没有更好的方法来解决这个问题?

1 个答案:

答案 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问题