适用于iOS的本机发行包中没有映像

时间:2017-10-19 16:09:10

标签: ios xcode react-native react-native-ios

我对这个问题的解决方案看起来很高,但是没有一个能够奏效。

在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

1 个答案:

答案 0 :(得分:0)

如果其他人有类似的问题,需要一些想法在哪里看..

检查您的 xcode 构建日志并查看您的包的创建位置 可能像

/Users/johnsmith/Library/Developer/Xcode/DerivedData/MyApp-asde14dwefda878/Build/Products/Release-iphonesimulator/MyApp.app

检查并确保 main.jsbundleassets/ 都在顶级。 如果不是,请检查您对 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 来修复,但这也会影响开发构建