我将所有静态图像放在名为" images"的文件夹中。在我的项目的根目录中。但是,在我运行以下命令捆绑我的应用程序后,该应用程序可以正常运行但没有显示图像。
我用来捆绑的命令:
./react-native bundle --minify --entry-file index.ios.js --platform ios --dev false --bundle-output main.jsbundle --assets-dest ./assets
请注意,资源文件夹已创建,并且包含所有图像的图像文件夹。
你能帮帮忙吗?
答案 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 /.."
上找到那些特定的图像资产。因此,与iOS原生应用程序不同,您需要将图像放在这些固定路径上。让我们将“assets”文件夹添加到“Copy Bundle Resources”。
第1步: 选择XCode项目 - >构建阶段 - >复制捆绑资源
答案 2 :(得分:2)
即使您在newer Xcode versions
(即12.x
或更高版本上工作,本地资产也不会加载。有两种解决方法:
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.jsbundle
和Xcode -> 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