Cordova 6 проблемы с версией Android

У меня есть опубликованное приложение в игровом магазине. Проблема, с которой я сталкиваюсь, заключается в том, что, похоже, Cordova 6 (я только что обновился до 6.5) изменила поколение релиз-версии. Вот мой config.xml

<widget android-packageName="com.myapp" id="com.myapp" ios-CFBundleIdentifier="com.myapp"  version="1.2.38" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">

Я создаю как собственные, так и переходные сборки для своего приложения по следующим правилам:

  • если версия API>=21, установите собственную версию cordova build android --release -- --minSdkVersion=21
  • Для других версий установите версию CrossWalk cordova plugin add cordova-plugin-crosswalk-webview && cordova build android --release

Вот код версии моих опубликованных приложений: введите описание изображения здесь

Теперь, после обновления Cordova до 6,5, когда я выполнил процесс сборки, изменив версию на 1,2,39, версии для пешеходного перехода использовали правильный код версии 102392 для ARM и 102394 для x86. Тем не менее, родная версия теперь имеет код версии 10239

Это вызывает проблему обновления, потому что моя текущая версия нативного кода "102389", что> "10239"

Я попытался добавить android-versionCode в мой config.xml следующим образом:

android-versionCode="102390" version="1.2.39"

Это, однако, приводит к

  1. Xwalk x86 версия = 1023904
  2. Версия Xwalk arm = 1023902
  3. Родная версия = 102390

Как вы видите, версии Xwalk теперь имеют гораздо большее количество, чем мои существующие производственные сборки. Это также неправильно, потому что версии Xwalk будут иметь преимущество перед собственной версией даже в устройствах с SDK >=21, что нежелательно. Как это исправить?

Основная проблема заключается в том, что cordova xwalk создает несколько архивных файлов, а расчет версии умножается на 10 и добавляется код платформы. Нативная версия построена как один пакет и не умножена на 10. Старые версии Cordova, похоже, справились с этим правильно.

1 ответ

Я реализовал обходной путь, добавив код ручной версии только для собственной сборки. Я действительно не должен был этого делать. Это работает, но я не собираюсь отмечать это принятое в надежде, что получу лучшие ответы.

Вот дополнительный код для нативной (не XWalk сборки)

APPVER=`cat config.xml | grep "widget " | sed 's/.* version=\"\([^\"]*\)\" xmlns.*/\1/'`
a=( ${APPVER//./ } )
vcode="$(((a[0]*10000+a[1]*100+a[2])))9"
cordova build android --release -- --minSdkVersion=21 --versionCode=${vcode}

Это теперь производит коды версий, которые предназначены для: введите описание изображения здесь

Другие вопросы по тегам