如何使用CodePush

时间:2016-02-06 17:35:20

标签: ios react-native code-push

我正在使用CodePush将js包和一些资源部署到我的react-native iOS应用程序。我没有使用react-native bundler从我的项目中收集所有静态图像,而是使用一个构建步骤将一个名为“static”的文件夹复制到release / assets中。但是除了“静态”文件夹之外,我还有发布/资产中的其他文件夹,其中包含通过uri在应用程序中动态使用的图像和视频(例如{uri:'assets / images / myImage.jpg'})。在XCode中构建应用程序时,我只需在包中包含assets文件夹。

从CodePush文档中我收集到,部署release文件夹应该更新我的所有资产。但事实并非如此。

我通过XCode下载了xcappdata,你可以看到,CodePush下载了所有内容并将其存储在/ Library / Application Support / CodePush / [id] / release中。但它仍然没有显示在应用程序中。

有什么想法吗?我是否误解了CodePush的功能?

1 个答案:

答案 0 :(得分:8)

正如您所见,当您通过CLI将目录发布到CodePush服务器时,它会在执行更新检查/同步时将其全部内容往返于最终用户的设备。也就是说,仅仅因为文件在该更新中并不意味着遗憾的是它将是可用的。

您看到的行为实际上是对Image组件在React Native中解析URI的方式的限制。如果使用资产系统指定“source”属性(通过require(“image.png”)调用),它将查找相对于当前运行的JS包的该文件。这就是CodePush允许更新图像的方式,因为只要我们的插件将“资源”文件夹放在磁盘上的JS捆绑文件旁边,<Image>组件就会自然找到它们。

但是,当您指定一个带有URI(正如您所做)的对象作为“source”属性的值时,Image组件会查找相对于磁盘上二进制文件的该文件,因此,它永远不会在更新它们时,请查找CodePush放置它的位置。

因此,CodePush仅支持更新通过require语法加载的图像。我会确保更新我们的文档以澄清这一点。为混乱道歉!