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

Expo项目使用@react-native-firebase/dynamic-links遇错求助

在Expo应用中使用Firebase动态链接的解决方案

错误原因

你遇到的报错本质是:@react-native-firebase/dynamic-links依赖原生Android/iOS项目配置,但Expo托管工作流(Managed Workflow)不允许直接修改原生文件(比如MainApplication.java),导致Firebase核心模块无法被正确初始化。


方案1:使用Expo官方集成包(推荐,无需原生修改)

Expo提供了官方的Firebase动态链接集成,不需要依赖react-native-firebase,直接用expo-firebase-dynamic-links即可:

  1. 安装依赖
npx expo install expo-firebase-dynamic-links
  1. 配置app.json
    在app.json的expo字段中添加Firebase配置和插件声明:
{
  "expo": {
    "ios": {
      "googleServicesFile": "./GoogleService-Info.plist"
    },
    "android": {
      "googleServicesFile": "./google-services.json"
    },
    "plugins": [
      [
        "expo-firebase-dynamic-links",
        {
          "dynamicLinkDomain": "your-dynamic-link-domain.page.link"
        }
      ]
    ]
  }
}

(注意替换your-dynamic-link-domain.page.link为你在Firebase控制台配置的动态链接域名)

  1. 替换原有代码
    用Expo的API替代react-native-firebase的逻辑:
import * as FirebaseDynamicLinks from 'expo-firebase-dynamic-links';

const handleDynamicLink = (link: FirebaseDynamicLinks.DynamicLink) => {
  console.log(link);
  // 处理动态链接逻辑
};

useEffect(() => {
  const unsubscribe = FirebaseDynamicLinks.onLink(handleDynamicLink);
  return unsubscribe;
}, []);

useEffect(() => {
  FirebaseDynamicLinks.getInitialLink()
    .then(link => {
      if (link) {
        console.log(link);
        // 处理初始链接逻辑
      }
    });
}, []);

方案2:切换到Expo裸工作流(需维护原生代码)

如果一定要使用@react-native-firebase/dynamic-links,需要将项目转为裸工作流,从而允许修改原生配置:

  1. 生成原生项目文件
npx expo prebuild
  1. 按照react-native-firebase文档配置原生项目
  • Android:在MainApplication.java中导入io.invertase.firebase.app.ReactNativeFirebaseAppPackage,并在getPackages()方法中添加new ReactNativeFirebaseAppPackage();同时按照动态链接的文档配置AndroidManifest.xml。
  • iOS:在Podfile中添加Firebase相关依赖,执行pod install,并配置Info.plist中的动态链接域名。
  1. 重新安装依赖并运行
    完成配置后,重新安装依赖并启动项目即可正常使用@react-native-firebase/dynamic-links。

方案对比

  • 方案1:无需接触原生代码,适配Expo托管工作流,更新维护简单,适合大多数场景。
  • 方案2:保留react-native-firebase的使用习惯,但需要维护原生项目,适合有复杂原生定制需求的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 12:50:43