适用于 iOS 的 react 本机发行包中没有图像
Posted
技术标签:
【中文标题】适用于 iOS 的 react 本机发行包中没有图像【英文标题】:No Images in react native release bundle for iOS 【发布时间】:2017-10-19 16:09:10 【问题描述】:我对这个问题的解决方案进行了各种研究,但都没有奏效。
在 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】:以防其他人有类似的问题,需要一些想法去哪里找..
检查您的 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
来解决,但这也会影响开发版本
【讨论】:
以上是关于适用于 iOS 的 react 本机发行包中没有图像的主要内容,如果未能解决你的问题,请参考以下文章
适用于 Android 和 iOS 的 React Native 中的警报功能
IOS中的Facebook登录适用于模拟器,但不适用于安装了本机应用程序的设备
使用 lottie-react-native (2.6.1) 时,React native expo 应用程序在 android 上崩溃,但适用于 ios