跳至内容

自动更新

这是提供热代码推送 (HCP) 功能的 Meteor 包。

每个不是使用 --minimal 选项创建的 Meteor 应用程序都通过 meteor-base 已经拥有此包,并且 HCP 应该开箱即用。对于那些运行 --minimal 应用程序并希望从此包中受益的人,只需使用 meteor add autoupdate 添加它。

autoupdate 在客户端的生产包中增加了最多 30KB。

使用此包,Meteor 将使用 DDP 发布一个名为 'meteor_autoupdate_clientVersions' 的集合。此集合将由用户的客户端订阅,并且每次客户端识别发布版本中的更改时,它都会刷新自身。

浏览器客户端

刷新将在浏览器中通过两种不同的方式发生:软更新硬更新。如果 Meteor 识别出仅更改了样式表,则它将验证用户的浏览器是否能够动态重新加载 CSS,并且将进行软更新。软更新将用新样式表替换旧样式表,而不会触发完整页面重新加载。

在服务器或客户端编译文件发生更改的情况下,将进行硬更新:Meteor 将使用 reload 包强制执行完整的浏览器重新加载。

除其他事项外,reload 包尝试重新加载应用程序,同时保留一些未更改的缓存文件。

Cordova 客户端

Cordova 应用程序没有软更新,一旦检测到更改,客户端就会始终完全刷新。

usesCleartextTraffic

从 Android 9(API 级别 28)开始,默认情况下禁用明文支持。在开发过程中,autoupdate 使用明文发布新的客户端版本。如果您的应用针对 Android 9 或更高版本,则需要创建一个 mobile-config.js 文件以启用明文的使用,以便 HCP 工作

js
App.appendToConfig(`<edit-config file="app/src/main/AndroidManifest.xml"
                     mode="merge"
                     target="/manifest/application"
                     xmlns:android="http://schemas.android.com/apk/res/android">
        <application android:usesCleartextTraffic="true"></application>
    </edit-config>
`);

--mobile-server

此外,为了使 HCP 功能正常工作,还必须使用 --mobile-server 选项提供应用程序服务器的地址。如果您在模拟器上测试您的应用程序,则应使用 meteor run android --mobile-server 10.0.2.2:3000 运行它。如果您在真实设备上运行它,则应用程序服务器和设备应位于同一网络中,并且您应使用 meteor run android --mobile-server XXX.XXX.XXX.XXX 运行您的应用程序,其中 XXX.XXX.XXX.XXX 是您的本地开发地址,例如 192.168.1.4

要更好地了解 HCP 如何适用于已发布到生产环境的移动应用程序,请参阅 移动设备上的热代码推送