Неверный порядок кода версии APK при создании нескольких APK как для 32-битной, так и для 64-битной платформы с пешеходным переходом

Мне нужно собрать приложение 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 (как показано на моем втором снимке экрана). Это не похоже на оптимальное решение для меня

Вопрос - есть ли лучший способ подойти к этой проблеме?


person Alex Ryltsov    schedule 08.09.2016    source источник


Ответы (1)


Кажется, есть ошибка в cordova-plugin-crosswalk-webview. Эта часть кода из platform/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, как видно... И эта часть кода из platform/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 * 10, чтобы решить проблемы с PlayMarket.

person Wishmaster    schedule 23.04.2017
comment
Я сделал то же самое, за исключением того, что мои платформы/android/cordova-plugin-crosswalk-webview/**YOUR_APP_SUFFIX**-xwalk.gradle выглядят так, как показано ниже.... x86_64 { versionCode defaultConfig.versionCode + 90077 ... arm64 { versionCode defaultConfig .версияКод + 90075 .... - person Alex Ryltsov; 04.05.2017
comment
или, используя ваш подход, мне удалось исправить это с помощью приведенного ниже android { if (xwalk64bit! = null) { productFlavors { x86_64 { versionCode defaultConfig.versionCode * 10 + 6 - 1 ndk { abiFilters x86_64, } } arm64 { versionCode defaultConfig.versionCode * 10 + 9 - 6 ндк { abiFilters arm64-v8a, } } } } } - person Alex Ryltsov; 08.08.2017
comment
Я менял тут: PROJECT/plugins/crosswalkplugin/platforms/android/xwalk.gradle Потом вообще менял. - person desmeit; 09.10.2018