gpt4 book ai didi

ios - 如何使用 CodePush 为 React Native 部署任意资源

转载 作者:可可西里 更新时间:2023-11-01 04:24:53 24 4
gpt4 key购买 nike

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

我从 CodePush 文档中了解到,部署发布文件夹应该会更新我的所有 Assets 。但事实并非如此。

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

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

最佳答案

如您所见,当您通过 CLI 将目录发布到 CodePush 服务器时,它会在终端用户执行更新检查/同步时将目录的全部内容往返传输到终端用户的设备。也就是说,仅仅因为一个文件在那个更新中并不意味着它可以不幸地使用。

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

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

正因为如此,CodePush 只支持更新通过 require 语法加载的图片。我会确保更新我们的文档以澄清这一点。对造成的困惑表示歉意!

关于ios - 如何使用 CodePush 为 React Native 部署任意资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35244170/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com