【问题标题】:java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/firebase/iid/FirebaseInstanceId; React Native Appjava.lang.NoClassDefFoundError:解析失败:Lcom/google/firebase/iid/FirebaseInstanceId;反应原生应用
【发布时间】:2021-08-04 06:33:09
【问题描述】:

我一直在尝试运行我的 react native 应用程序,但它在启动时崩溃了,并且调试器没有返回任何错误,所以我在 Android Studio 中检查了 log cat,它显示了以下错误: java.lang.NoClassDefFoundError:解析失败:Lcom / google / firebase / iid / FirebaseInstanceId;

原因:java.lang.ClassNotFoundException:找不到类“com.google.firebase.iid.FirebaseInstanceId”

我使用的 React-Native 版本是:0.61.5 而我安装的 react-native-firebase 版本是 5.6.0

这已经是最近的一次失败,因为之前该应用程序运行正常,而且我也没有对 firebase 集成进行任何更改

【问题讨论】:

  • 你最近有更新吗? Android工作室,反应原生?你是如何运行你的应用程序的?尝试直接从 Android Studio 运行它,以便更好地了解问题所在。好像firebase安装有问题。
  • 你使用@amplify/pushnotifications 吗?他们使用已弃用的 Firebase 消息传递版本 12.0.1。确保您没有与其他包的版本冲突

标签: android firebase react-native


【解决方案1】:

要调试它,首先我建议运行 adb logcat 并查看您遇到的 Java 错误。如果在找不到所需的 Java 类时出错,请尝试将以下内容添加到您的项目中:

app/build.gradle 文件(依赖部分):

implementation 'com.google.firebase:firebase-iid'

(您可能还需要为此包提供版本)

【讨论】:

    【解决方案2】:

    我遇到了同样的错误,我通过卸载旧版本并安装新版本的推送通知来修复此错误。

    uninstall:
    npm uninstall react-native-push-notification
    install:
    npm i react-native-push-notification
    

    由于 react-native-push-notification 已升级到新版本 v7.x,因此在安装应用程序时出现上述错误。

    签出 -> https://www.npmjs.com/package/react-native-push-notification

    【讨论】:

      【解决方案3】:

      在 react-native-push-notification 中存在一个问题(FirebaseInstanceId 已被弃用,现已删除)。听起来您正在使用一个在此处使用的库。它应该稍后修复,但现在您可以将以下内容添加到您的 android/build.gradel 文件中。

      buildscript {
          ext {
              ...
              firebaseMessagingVersion = "21.0.0"
          }
      

      我还必须更新这些库(如果不这样做,您会收到编译错误,因此您可能需要更新其他库):

      -    "react-native-device-info": "^5.5.8",
      +    "react-native-device-info": "^8.1.3",
      
      -    "react-native-push-notification": "^7.3.0",
      +    "react-native-push-notification": "^7.3.1",
      

      这是指issue

      【讨论】:

      • 这行得通,但是在构建时会产生以下错误:捆绑失败:SyntaxError: \ mobile-app \ node_modules \ react-native-device-info \ src \ index.ts: Unexpected token (770 : 12) 768 | } 769 | > 770 |导出类型 {AsyncHookResult, DeviceType, LocationProviderInfo, PowerState};但是如果我删除类型保留字错误消失,你认为我以后可以产生错误吗?
      • 这闻起来像是 TS 版本的问题。不确定您使用的是哪个版本,但您应该查看 react-native-device-info 站点以获取可能的解决方案。
      【解决方案4】:

      wix/react-native-notifications 这个库有 refreshToken() 方法的问题。

      Didn't find class "com.google.firebase.iid.FirebaseInstanceId"
      

      所以只需删除/重新安装软件包,如果仍然出现错误,那么我们必须等待此库的下一个错误修复版本或

      我们可以手动更改本机代码以使其正常工作。

      下面是lib的链接

      https://github.com/wix/react-native-notifications/issues?q=FirebaseInstanceId

      【讨论】:

        猜你喜欢
        • 2023-03-24
        • 2018-11-09
        • 1970-01-01
        • 2017-05-10
        • 2015-08-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多