Случайный откат Microsoft Codepush
PhoneGap Build
Я использую Phonegap Build для сборки файлов Android (apk) и iOS (ipa). В документации для Codepush ( https://docs.microsoft.com/en-us/appcenter/distribution/codepush/cordova) говорится, что плагин совместим с Phonegap Build. Тем не менее, я создал приложения для iOS и Android (добавив <preference name="android-build-tool" value="gradle" />
в config.xml, как рекомендовано для Android), однако ни одно из приложений не получит новые выпуски из Codepush - приложение будет просто отображаться в соответствии с исходной установкой.
Случайные откаты
У меня были серьезные проблемы с тестированием Codepush с Android. Я устанавливаю скомпилированное приложение на устройство, и оно работает нормально. Я исправляю приложение, внося незначительные изменения в html-файл и использую appcenter codepush release-cordova..., чтобы выпустить новое обновление.
Затем я запускаю приложение, закрываю его и запускаю снова. Первые два или три обновления будут правильно подобраны. Тем не менее, после этого (и это не согласовано, оно отличается между устройствами, когда это происходит), следующее обновление завершается неудачно, и приложение возвращается к установленной версии, и в appcenter обновление отображается в разделе "Откаты".
С этого момента все новые выпуски игнорируются, и приложение остается в установленной версии. Похоже, только два исправления: 1. Переустановка приложения - это исправляет его, и он начинает собирать новые выпуски, пока он снова не выйдет из строя ИЛИ 2. Очистить всю историю развертывания. Снова, это исправляет это, пока это не терпит неудачу снова.
Обновление не дает сбоя - я просто изменил некоторый текст в index.html, чтобы он не падал (плюс обновление будет установлено на одном устройстве, но не будет работать на другом, так что этого не может быть).
Приложение запускает синхронизацию Codepush следующим образом:
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
codePush.sync(null,{
ignoreFailedUpdates : false
});
}
Я пробовал с и без опции "ignoreFailedUpdates", но в конечном итоге это не сработало. Я предполагаю, что проблема вызвана неуспешным завершением приложения codePush.notifyApplicationReady
Возможно, из-за проблем с сетью.
Тем не менее, это, кажется, ограничивает шоу в том смысле, что фактически делает Codepush непригодным для использования в реальном мире. Нет гарантии, что обновления дойдут до пользователей; что еще хуже, если обновление завершится неудачно, приложение откатится до последней установленной версии и впоследствии проигнорирует все новые обновления, поэтому они застряли на старой версии или должны пройти через процедуру переустановки приложения. (Очистка истории развертывания каждый раз, когда мы делаем обновление, может работать, но без гарантий).
В качестве примера я создал приложение, которое одновременно отображало некоторые HTML, включая номер версии. Сборка и установка
'V1.00'
отредактировал HTML, изменив версию на v1.01.
Выпустите обновление (уже установив приложение с помощью appcenter apps set-current -a ...
)
appcenter codepush release-cordova -d Staging
Откройте приложение, закройте его, откройте снова
Правильно показывает 'v1.01'
отредактировал HTML, изменив версию на v1.02.
Выпустить обновление
Открытое приложение, правильно показывает
'V1.02'
Закройте, а затем снова откройте
Показывает v1.00, а appcenter показывает откат.
Я попытался с помощью опции -m на appcenter codepush release-cordova
Кроме того, я пробовал это на Android 6 и 7 с теми же проблемами.
Мои вопросы: 1. Есть ли что-нибудь еще, что я могу попытаться заставить обновления установить правильно, или, если они потерпят неудачу, НЕ замораживать приложение в его последнем установленном состоянии и игнорировать любые будущие обновления. 2. Это проблема с Cordova или может произойти то же самое, если я перешел с помощью React-Native? 3. Есть ли способ заставить Codepush работать с Phonegap Build?
Мы хотели иметь возможность развернуть приложение для нашей базы пользователей, но без необходимости переустанавливать его при каждом небольшом изменении. Codepush казался идеальным решением, однако на данный момент он выглядит так, как будто он просто не работает.
Любая помощь приветствуется.