You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Native集成Branch.io后Android端启动崩溃问题排查

解决React Native集成Branch.io Android启动崩溃问题

问题背景

React Native项目集成Branch.io实现深度链接功能,iOS平台运行正常,但Android端集成SDK后应用启动直接崩溃。

错误日志

Process: com.mypkg, PID: 19133
java.lang.RuntimeException: Unable to create application com.mypkg.MainApplication: android.content.res.Resources$NotFoundException: String resource ID #0x0
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:7110)
at android.app.ActivityThread.access$1800(ActivityThread.java:259)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2208)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loopOnce(Looper.java:233)
at android.os.Looper.loop(Looper.java:344)
at android.app.ActivityThread.main(ActivityThread.java:8249)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:589)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1071)
Caused by: android.content.res.Resources$NotFoundException: String resource ID #0x0
at android.content.res.Resources.getText(Resources.java:463)
at android.content.res.Resources.getString(Resources.java:556)
at io.branch.referral.BranchUtil.readBranchKey(BranchUtil.java:113)
at io.branch.referral.Branch.getAutoInstance(Branch.java:385)
at io.branch.rnbranch.RNBranchModule.getAutoInstance(RNBranchModule.java:106)
at com.mypkg.MainApplication.onCreate(MainApplication.kt:38)
at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1225)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:7103)

解决方案

1. 修正BranchKey配置位置

Branch SDK要求io.branch.sdk.BranchKey等元数据必须放在<application>标签下,而非<activity>标签内。修改AndroidManifest.xml:

<application android:name=".MainApplication" ...>
    <!-- 其他原有meta-data -->
    <meta-data
        android:name="com.google.android.gms.wallet.api.enabled"
        android:value="true" />
    
    <!-- 移动Branch相关配置到此处 -->
    <meta-data android:name="io.branch.sdk.BranchKey" android:value="key_test" />
    <meta-data android:name="io.branch.sdk.BranchKey.test" android:value="key_test" />
    <meta-data android:name="io.branch.sdk.TestMode" android:value="false" />

    <activity android:name=".MainActivity" ...>
        <!-- 保留原有intent-filter配置 -->
    </activity>
</application>

2. 确认BranchKey有效性

  • 替换key_test为Branch控制台获取的真实测试密钥,禁止使用占位符
  • 若TestMode设为false,需替换为正式环境BranchKey;若使用测试密钥,将TestMode改为true

3. 调整初始化顺序

将Branch初始化代码移到SoLoader.init之后,避免加载顺序冲突:

override fun onCreate() {
    super.onCreate()
    SoLoader.init(this, false)
    RNBranchModule.getAutoInstance(this) // 移至SoLoader初始化之后
    if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {
        load()
    }
    RNBranchModule.enableLogging();
    ReactNativeFlipper.initializeFlipper(this, reactNativeHost.reactInstanceManager)
}

4. 检查依赖版本兼容性

确认io.branch.sdk.android:library:5.8.0与当前React Native版本兼容,若存在冲突,尝试升级或降级Branch SDK至react-native-branch官方推荐的对应版本。

内容的提问来源于stack exchange,提问作者user17793928

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 04:22:08