Мне нужно собрать приложение ionic/cordova как для 32-битной (armeabi-v7a и x86), так и для 64-битной (arm64-v8a и x86_64) платформ. Я создаю четыре отдельных APK с помощью команд ionic build android --release
и ionic build android --release --xwalk64bit
Все идет хорошо, за исключением того, что versionCode (для версии, установленной на 0.0.11) немного отличается — см. ниже
Проблема в том, что x86 и x86_64 должны иметь более высокий код версии, чем ARM apks. Это необходимо, поскольку устройства x86 могут работать с библиотеками ARM, но не существует устройства ARM, способного обрабатывать библиотеки x86. Таким образом, мы должны сохранить код версии x86 APK выше, чем код версии ARM apk, и правильный APK будет отправлен на нужное устройство.
Вот что я ищу (и что мне наконец удалось создать) - см. ниже
Проблема в том, что versionCode задается как build.gradle, так и изменяется crosswalk mobile-xwalk.gradle, что дает неправильные версии с использованием моего подхода к сборке, описанного выше. Я попытался установить versionCode с помощью параметра android-versionCode в config.xml и с помощью cdvVersionCode для build.gradle (см. http://cordova.apache.org/docs/en/6.x/guide/platforms/android/index.html#configuring-gradle), но не повезло.
В итоге я исправил проблему, вручную изменив mobile-xwalk.gradle, чтобы установить правильные коды версий для 64-битных apks (как показано на моем втором снимке экрана). Это не похоже на оптимальное решение для меня
Вопрос - есть ли лучший способ подойти к этой проблеме?