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中获取新版本 - 该应用程序只会根据原始安装显示
随机回滚
我一直在使用Android测试Codepush遭遇重大挫折。我将已编译的应用程序安装在设备上,运行正常。我通过对html文件进行微小更改来修改应用程序,并使用appcenter codepush release-cordova ...来推出新的更新。
然后我运行应用程序,关闭它并再次运行它。将正确拾取前两个或三个更新。但是,在此之后(并且它不一致,发生这种情况时设备之间不同),下一次更新失败,应用程序恢复到已安装的版本,在appcenter中,更新显示在“回滚”下。
从那时起,任何新版本都会被忽略,应用程序将保留在已安装的版本上。 似乎只有两个修复 1.重新安装应用程序 - 这会修复它并开始获取新版本,直到它再次失败或 2.清除部署的整个历史记录。再次,这将修复它,直到它再次失败。
更新没有崩溃 - 我只是更改了index.html中的一些文本,因此它不会崩溃(加上更新将在一台设备上安装但在另一台设备上失败,所以它不能那样)。 / p>
该应用程序触发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似乎是一个完美的解决方案,但是,目前它看起来好像它根本不可行。
非常感谢任何帮助。