react-native iOS应用程序在部署后不显示静态资产(图像)

时间:2016-02-12 04:45:42

标签: 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

请注意,资源文件夹已创建,并且包含所有图像的图像文件夹。

你能帮帮忙吗?

5 个答案:

答案 0 :(得分:15)

资产目的地和mainbundle.js必须位于同一文件夹中。尝试:

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

无论如何,捆绑包都会在那里创建一个资产文件夹。

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

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

答案 1 :(得分:14)

请先检查XCode控制台日志。你会发现应用程序无法在路径“{project name} .app / assets / resources /.."

上找到那些特定的图像资产。

enter image description here

因此,与iOS原生应用程序不同,您需要将图像放在这些固定路径上。让我们将“assets”文件夹添加到“Copy Bundle Resources”。

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

第2步 enter image description here

第3步 enter image description here

第4步 enter image description here

答案 2 :(得分:2)

即使您在newer Xcode versions(即12.x或更高版本上工作,本地资产也不会加载。有两种解决方法:

  1. 升级本机版本
  2. 或转到下面的文件:
node_modules > react-native > Libraries > Images > RCTUIImageViewAnimated.m search for `if (_currentFrame)`

将以下else块添加到if块中,如下所示:

if (_currentFrame) {
  layer.contentsScale = self.animatedImageScale;
  layer.contents = (__bridge id)_currentFrame.CGImage;
 } else {
  [super displayLayer:layer];
 }

如果它的xcode较旧,则需要在assets下添加main.jsbundleXcode -> build phases -> copy bundle resources

使用库react-native-image-fix Here's the link尝试以下命令:

npm install --save react-native-fix-image
npx react-native-fix-image

Rebuild the project.

答案 3 :(得分:1)

对于较新版本的react-native,请使用以下命令:

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

您将在asset文件夹中看到main.jsbundle文件夹和ios文件。之后,转到Xcode-> build phases-> copy bundle resources,然后添加asset文件夹和main.jsbundle文件。别忘了点击Copy if needed

答案 4 :(得分:-1)

我解决了将xcode版本从9.3更改为9.2

的问题