Phonegap Build

我一直在使用Phonegap Build来构建Android(apk)和iOS(ipa)文件 . Codepush(https://docs.microsoft.com/en-us/appcenter/distribution/codepush/cordova)的文档指出该插件与Phonegap Build兼容 . 但是,我已经为iOS和Android构建了应用程序(根据Android的推荐将 <preference name="android-build-tool" value="gradle" /> 添加到config.xml)但是,这两个应用程序都不会从Codepush中获取新版本 - 应用程序只会根据原始安装显示 .

Random rollbacks

我一直在用Android测试Codepush遭遇重大挫折 . 我将已编译的应用程序安装在设备上,运行正常 . 我通过对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显示回滚 .

我尝试在appcenter codepush release-cordova上使用'-m'选项

另外,我在Android 6和7上都尝试过同样的问题 .

我的问题是:1 . 还有什么我可以尝试正确安装更新,或者,如果它们失败,不要冻结应用程序的上次安装状态,并忽略任何未来的更新 . 2.这是一个cordova问题,或者如果我使用React-Native切换可能会发生同样的事情? 3.有没有办法让Codepush与Phonegap Build一起工作?#

我们希望能够将应用程序推广到我们的用户群,但无需在每次小改动时重新安装它们 . Codepush似乎是一个完美的解决方案,但是,目前看起来好像它根本不可行 .

任何帮助将非常感激 .