Expo升级SDK,iOS应用打包后白屏问题实录

项目版本

  • Expo SDK版本:39 -> 47
  • React Native版本:0.63.2 -> 0.70.8
  • React版本:16.13.1 -> 18.1.0

记录

在将一个老项目从 Expo SDK 41 升级到 47 的过程中,我遇到了一个生产环境应用白屏的问题。
在 Expo Go开发环境里调试的时候,iOS 版本看起来正常,但使用 EAS build 打包后,却完全是空白的。

通过设备日志,我发现有一些报错信息,说找不到静态图片。

问题的根源在于我的 metro.config.js 文件。

当升级到新版本的SDK后,Expo 应该会生成一个类似下面这样的 metro.config.js 文件:

module.exports = {
    transformer: {
        assetPlugins: ['expo-asset/tools/hashAssetFiles']
    }
};
>

但在我们的项目中,我们之前已经创建了这个文件来支持 react-native-svg-transformer 请求的 svg 资源,因此 Expo 并不会覆盖它。

解决方案也很简单,就是将 Expo 生成的配置与我们现有的 metro.config.js 文件合并。在我把配置合并进去后,生产版本总算跟开发版本一样正常显示内容了。

这是我的最终 metro.config.js 配置:

const { getDefaultConfig } = require("@expo/metro-config")

module.exports = (async () => {
  const {
    resolver: { sourceExts, assetExts }
  } = await getDefaultConfig(__dirname)

  return {
    transformer: {
      babelTransformerPath: require.resolve("react-native-svg-transformer"),
      assetPlugins: ['expo-asset/tools/hashAssetFiles']
    },
    resolver: {
      assetExts: assetExts.filter((ext) => ext !== "svg"),
      sourceExts: [...sourceExts, "svg"]
    }
  }
})()

真的非常感谢这个StackOverflow上的回答

Expo 论坛里的这篇帖子,在找到解决方案时给了我很大的帮助。


以下是一些我在Debug时发现蛮有用的小贴士:

  1. 为了加快调试过程,我在本地运行生产构建,以便更轻松地进行测试。具体步骤如下:

    • 运行 npx expo prebuild 以生成 ios 文件夹。
    • 打开 .xcworkspace 文件,并使用 Xcode IDE 构建应用程序。
    • 或者,您可以运行 expo start --ios --no-dev 来在本地构建应用程序。

    尽管实际构建时间与 EAS 构建类似,但这种方法大大减少了下载构建的时间以及上传到 TestFlight 时的处理时间。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
打包 iOS 应用程序,需要进行以下步骤: 1. 在终端中执行以下命令安装 Expo CLI: ``` npm install -g expo-cli ``` 2. 使用以下命令创建新的 Expo 项目: ``` expo init my-project ``` 3. 进入项目目录并安装依赖项: ``` cd my-project npm install ``` 4. 在终端中执行以下命令启动 Expo 开发服务器: ``` expo start ``` 5. 在启动 Expo 开发服务器后,会自动打开 Expo DevTools 界面。从这里可以运行应用程序并在 iOS 模拟器中查看。要在模拟器中运行应用程序,请点击 Expo DevTools 界面上的 "Run on iOS simulator" 按钮。 6. 要在实际的 iOS 设备上运行应用程序,请安装 Expo 客户端应用程序并扫描二维码。在 Expo DevTools 界面上,可以使用 "Publish or republish project" 按钮将应用程序发布到 Expo 服务器上。 7. 要将应用程序打包iOS 应用程序,请使用以下命令: ``` expo build:ios ``` 8. 执行上述命令后,Expo 将开始构建应用程序并生成用于安装和部署应用程序的二进制文件。生成的文件将位于 Expo 服务器上,可以使用以下命令下载: ``` expo build:status ``` 9. 下载文件后,可以使用 Xcode 将应用程序上传到 App Store。打开 Xcode 并导航到 "Window" > "Organizer" 界面。在这里,可以创建新的应用程序版本并将 Expo 生成的二进制文件上传到 App Store。 以上就是使用 Expo 打包 iOS 应用程序的步骤。注意,这些步骤可能会因时而异,具体取决于您的应用程序和开发环境。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值