Expo iOS 构建在初始屏幕上崩溃
Expo iOS build crashing on splash screen
我使用 Expo 和 React Native 开发了一个应用程序。该应用程序在使用 Expo Go 应用程序开发期间运行良好,我在 Android 和 iOS.
中进行了测试
然后我使用 expo build 构建了每个应用程序。生产 Android 应用程序工作正常,但 iOS 应用程序在启动画面出现后的几秒钟内崩溃,无论是在真实设备上还是在我 运行 模拟器构建时。我将 iOS 应用程序构建为存档,目前正在试飞中。我能够在没有崩溃的情况下将以前的版本部署到应用程序商店。
我下载了崩溃日志,最后一个异常参考是:
UIKitCore: -[UIApplication _checkBackgroundRefreshAPIAdoption]
我在任何地方都找不到对 checkBackgroundRefreshAPIAdoption 的引用。我所做的最后一个重大更改是添加 MapView 功能,但我也尝试删除所有对 MapView 的引用并重建,但仍然 运行 进入同一问题。
编辑:忘记添加,我确实按照此处 https://docs.expo.dev/versions/latest/sdk/map-view/
部署独立 iOS 应用程序的说明进行了操作
有人知道问题出在哪里吗?
最后我自己想出了这个。它与我认为的地图无关api。
它实际上是通知的一部分。当我向应用程序添加通知时,我将 UIBackgroundModes
属性 添加到 app.json 文件中 ios
下的 infoPlist
对象。我把它作为一个字符串放入,但是这个 属性 需要是一个字符串数组。
这是我之前的:
"infoPlist": {"UIBackgroundModes": "remote-notification"}
这就是我将其更改为:
"infoPlist": {"UIBackgroundModes": ["remote-notification"]}
应用程序现在可以正常加载。
这里是 app.json 文件的完整相关部分:
{"expo": { "ios": { "infoPlist": { "UIBackgroundModes": ["remote-notification"] } } } }
就我而言,这是由于 AndroidManifest.xml 文件中缺少我忘记添加的凭据。我 运行 adb logcat
并在日志中发现错误,这就是应用程序在初始屏幕上崩溃的原因。
<meta-data android:name="com.google.android.gms.ads.APPLICATION_ID" android:value="YOUR_KEY"/>
通过 运行 检查配置错误 adb logcat
并在您的应用程序崩溃时读取日志
我使用 Expo 和 React Native 开发了一个应用程序。该应用程序在使用 Expo Go 应用程序开发期间运行良好,我在 Android 和 iOS.
中进行了测试然后我使用 expo build 构建了每个应用程序。生产 Android 应用程序工作正常,但 iOS 应用程序在启动画面出现后的几秒钟内崩溃,无论是在真实设备上还是在我 运行 模拟器构建时。我将 iOS 应用程序构建为存档,目前正在试飞中。我能够在没有崩溃的情况下将以前的版本部署到应用程序商店。
我下载了崩溃日志,最后一个异常参考是:
UIKitCore: -[UIApplication _checkBackgroundRefreshAPIAdoption]
我在任何地方都找不到对 checkBackgroundRefreshAPIAdoption 的引用。我所做的最后一个重大更改是添加 MapView 功能,但我也尝试删除所有对 MapView 的引用并重建,但仍然 运行 进入同一问题。
编辑:忘记添加,我确实按照此处 https://docs.expo.dev/versions/latest/sdk/map-view/
部署独立 iOS 应用程序的说明进行了操作有人知道问题出在哪里吗?
最后我自己想出了这个。它与我认为的地图无关api。
它实际上是通知的一部分。当我向应用程序添加通知时,我将 UIBackgroundModes
属性 添加到 app.json 文件中 ios
下的 infoPlist
对象。我把它作为一个字符串放入,但是这个 属性 需要是一个字符串数组。
这是我之前的:
"infoPlist": {"UIBackgroundModes": "remote-notification"}
这就是我将其更改为:
"infoPlist": {"UIBackgroundModes": ["remote-notification"]}
应用程序现在可以正常加载。
这里是 app.json 文件的完整相关部分:
{"expo": { "ios": { "infoPlist": { "UIBackgroundModes": ["remote-notification"] } } } }
就我而言,这是由于 AndroidManifest.xml 文件中缺少我忘记添加的凭据。我 运行 adb logcat
并在日志中发现错误,这就是应用程序在初始屏幕上崩溃的原因。
<meta-data android:name="com.google.android.gms.ads.APPLICATION_ID" android:value="YOUR_KEY"/>
通过 运行 检查配置错误 adb logcat
并在您的应用程序崩溃时读取日志