我对这个问题的解决方案看起来很高,但是没有一个能够奏效。
在iOS上,我正在制作一个包含react-native bundle --dev false --assets-dest ./ios/Bundle --entry-file index.js --platform ios --bundle-output ./ios/Bundle/main.jsbundle
之后,我将包含assets目录和main.jsbundle的Bundle目录添加到我在XCode中的项目。
然后我将Run方案更改为适用于Release配置,并在物理设备上运行该项目。
React Native找到了捆绑包,但没有任何静态资产显示。
我在React Native 0.48
上答案 0 :(得分:0)
如果其他人有类似的问题,需要一些想法在哪里看..
检查您的 xcode 构建日志并查看您的包的创建位置 可能像
/Users/johnsmith/Library/Developer/Xcode/DerivedData/MyApp-asde14dwefda878/Build/Products/Release-iphonesimulator/MyApp.app
检查并确保 main.jsbundle
和 assets/
都在顶级。
如果不是,请检查您对 bundle 命令的参数(由 bundle react native code and images
命令在 react-native-xcode.sh
构建阶段调用),默认值应该没问题。您还可以使用 set -x
打印出有关正在调用的内容的更多信息,或单击 show environment variables in build log
假设一切都在正确的位置......然后尝试查看代码真正寻找图像的位置
import background from "../../assets/background.png"
alert(Image.resolveAssetSource(background).uri);
在文件资源管理器中检查,看看是否可以找到该文件。我的代码正在查找的文件夹是这样的:
/Users/.../Library/Developer/CoreSimulator/Devices/718SDF9995-1123D6-46A8-93DD-830963FC4372/data/Containers/Data/Application/25C8SG9C-2CSA-4891-BDFD-B6B37A3B4022/Library/Application Support/.expo-internal/
在我的情况下,我已经从 expo 中弹出,并且文件在散列下,但代码正在寻找它作为 ../assets/background.png
它使用 expo-asset 来解析发布中的文件(而不是调试中的 Metro ),修复方法是添加
../node_modules/expo-updates/scripts/create-manifest-ios.sh
到 Bundle React Native code and images
构建阶段结束并添加
导入“博览会更新”
到我的 App.tsx
文件的顶部
另一个想法是添加一个外部图像,看看它是否可以加载。
source={{uri:'https://......../...png'}}
Ios14 图像也存在问题,可以通过更新 react-native 或使用 npx react-native-fix-image
来修复,但这也会影响开发构建