部署后,反应本机iOS应用程序不显示静态资产(图像)

部署后,反应本机iOS应用程序不显示静态资产(图像),ios,deployment,react-native,Ios,Deployment,React Native,我的所有静态图像都在项目根目录中名为“images”的文件夹中。但是,在我运行以下命令捆绑我的应用程序后,该应用程序可以工作,但不会显示任何图像 我用于捆绑的命令: ./react-native bundle --minify --entry-file index.ios.js --platform ios --dev false --bundle-output main.jsbundle --assets-dest ./assets 请注意,资产文件夹已创建,其中包含“我的图像”文件夹和“所

我的所有静态图像都在项目根目录中名为“images”的文件夹中。但是,在我运行以下命令捆绑我的应用程序后,该应用程序可以工作,但不会显示任何图像

我用于捆绑的命令:

./react-native bundle --minify --entry-file index.ios.js --platform ios --dev false --bundle-output main.jsbundle --assets-dest ./assets
请注意,资产文件夹已创建,其中包含“我的图像”文件夹和“所有图像”ok


您能帮忙吗?

资产目标和main.jsbundle必须位于同一文件夹中。尝试:

./react-native bundle --minify --entry-file index.ios.js --platform ios --dev false --bundle-output ./release/main.jsbundle --assets-dest ./release
bundler将在其中创建一个assets文件夹

更新包括以下讨论中的信息:


在xcode构建步骤中执行的react-native-xcode.sh脚本将bundler创建的main.jsbundle和assets文件夹复制到应用程序包中。如果要手动部署包,则需要确保已复制这些文件。最简单的方法是将main.jsbundle直接包含到项目中,并创建指向资产文件夹的文件夹链接。验证这两个都显示在“构建阶段”->“复制捆绑资源”中。

请先检查XCode控制台日志。您将发现应用程序无法在路径“{project name}.app/assets/resources/”上找到这些特定的图像资产

所以,和iOS原生应用程序不同,您需要将图像放在这些固定路径上。让我们将“资产”文件夹添加到“复制捆绑资源”中

第1步: 选择XCode项目->构建阶段->复制捆绑资源

步骤2

步骤3

步骤4

我修复了将xcode版本从
9.3
更改为
9.2
的问题。对于react native的较新版本,请使用以下命令:

react-native bundle --minify --entry-file index.js --platform ios --dev false --bundle-output ./ios/main.jsbundle --assets-dest ./ios

您将在
ios
文件夹中看到
asset
文件夹和
main.jsbundle
文件。然后转到
Xcode
->
构建阶段
->
复制捆绑资源
,然后添加
asset
文件夹和
main.jsbundle
文件。如果需要,请不要忘记单击
副本

即使您使用的是
较新的Xcode版本
,即
12.x
或更高版本,也不会加载本地资产。有两种解决方案:

  • 升级本机版本
  • 或转到以下文件:
  • 将以下else块添加到if块,如下所示

    if (_currentFrame) {
      layer.contentsScale = self.animatedImageScale;
      layer.contents = (__bridge id)_currentFrame.CGImage;
     } else {
      [super displayLayer:layer];
     }
    
    如果是旧的xcode,您需要在
    xcode->build phases->copy bundle resources
    下添加
    assets
    main.jsbundle

    使用库
    react native image fix
    尝试以下命令:

    npm install --save react-native-fix-image
    npx react-native-fix-image
    
    Rebuild the project.
    

    你能提供更多的细节吗。模拟器还是设备?如果是设备,您是如何部署它的?您可以发布一个图像使用的代码示例吗?它发生在设备和模拟器上。我所做的部署是:1)编辑模式以设置“发布”模式。2) 将捆绑包位置更改为使用本地主捆绑包(main.jsbundle)3)执行上述命令捆绑应用程序。4) 选择我的设备并运行它。图像的示例用法:可能是jsCodeLocation=[[NSBundle mainBundle]URLForResource:@“release/main”,扩展名为:@“jsbundle”];您还可以尝试do--bundle输出。/main.jsbundle--assets dest。关键是,require()搜索相对于当前main.jsbundle的资产。抱歉,这不起作用。我认为问题在于,捆绑包总是创建一个名为“资产”的文件夹,并复制其中的“图像”文件夹。好的,终于让它工作了。您是对的,因为资产文件夹和main.jsbundle必须位于同一文件夹中。但是,当我将它们放在默认Images.xcsets所在的同一个目录中时,情况就正常了。在将资产文件夹和main.jsbundle添加到项目中时,我还选择了“创建文件夹引用”。这样,它们都出现在“构建阶段”->“复制捆绑资源”中,并且都按预期工作。谢谢。是的,这对我很有帮助。在“复制捆绑资源”构建阶段,我缺少添加生成的资产文件夹(而不是单个文件)。我添加了相同的内容,在捆绑资源中添加了图像。静止图像未加载。我可以在参考资料中看到添加的图像和主jsbundle。您使用的是哪个版本的react native?如果我还记得v0.62.2的版本,那么这个命令适用于v0.55。Tnx对于帮助者来说,这个问题对我来说真的很烦人!您好@SagarTrehan,我希望您完成这些步骤并相应执行。你们在执行过程中看到什么问题了吗?嗨@Milan,我多次遵循完全相同的步骤,但我仍然面临着同样的问题,即iOS构建中没有加载图像。我使用的是react native版本“0.59.10”。这个问题是否与最新的react native相关?@SagarTrehan,让我检查一下,现在它是否对我有效。我在“复制捆绑资源”中复制“$Project/src/assets”文件夹,而不是“$Project/ios/assets”。这是我犯的愚蠢错误。非常感谢您提供的解决方案。正如您所说,它对我起到了作用,只需在ios文件夹中选择资产文件夹,然后将其添加到复制包ressource。
    npm install --save react-native-fix-image
    npx react-native-fix-image
    
    Rebuild the project.