java.lang.NoSuchMethodError:类 Lcom/facebook/GraphRequest 中没有虚拟方法 setSkipClientToken(Z)V;

Muh*_*mer 8 android nosuchmethoderror gradle build.gradle react-native

在我什么也没做之前,它工作得很好,没有包更新,没有 gradle 更新,没有什么,只是创建了新的构建,并且发生了这个错误。但对于某些团队成员来说,错误发生在 gradle 同步之后。

问题是构建成功生成,没有任何错误,但打开应用程序时突然崩溃(在调试和发布模式下)

错误

    E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #3
        java.lang.NoSuchMethodError: No virtual method setSkipClientToken(Z)V in class Lcom/facebook/GraphRequest; or its super classes (declaration of 'com.facebook.GraphRequest' appears in /data/app/~~aLf3pfLySq5u7zpIAr2Hlg==/com.package-name-99h4GcP3GNx2sMs76AXGvA==/base.apk)
            at com.facebook.marketing.internal.RemoteConfigManager.getRemoteConfigQueryResponse(RemoteConfigManager.java:87)
            at com.facebook.marketing.internal.RemoteConfigManager.access$000(RemoteConfigManager.java:43)
            at com.facebook.marketing.internal.RemoteConfigManager$1.run(RemoteConfigManager.java:64)
            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
            at java.lang.Thread.run(Thread.java:923)
Run Code Online (Sandbox Code Playgroud)

gradle-wrapper.properties

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-6.9-all.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
Run Code Online (Sandbox Code Playgroud)

build.gradle

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
  ext {
      buildToolsVersion = "30.0.2"
      minSdkVersion = 21
      compileSdkVersion = 30
      targetSdkVersion = 30
      ndkVersion = "21.4.7075529"
  }
  repositories {
      google()
      mavenCentral()
      jcenter()
      // maven {
      //    url 'https://maven.fabric.io/public'
      // }
      maven { url "https://www.jitpack.io" }
  }
  dependencies {
      classpath("com.android.tools.build:gradle:4.2.2")
      classpath 'com.google.gms:google-services:4.2.0'  // Google Services plugin
      // Add the Fabric Crashlytics plugin.
      // classpath 'io.fabric.tools:gradle:1.31.2'
      // firebase performance sdk
      classpath 'com.google.firebase:perf-plugin:1.4.0'
      classpath 'com.google.firebase:firebase-crashlytics-gradle:2.7.1'


      // NOTE: Do not place your application dependencies here; they belong
      // in the individual module build.gradle files
  }
}

allprojects {
  repositories {
      mavenCentral()
      mavenLocal()
      maven {
          // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
          url("$rootDir/../node_modules/react-native/android")
      }
      maven {
          // Android JSC is installed from npm
          url("$rootDir/../node_modules/jsc-android/dist")
      }

      google()
      jcenter()
      maven { url 'https://www.jitpack.io' }
  }
}


subprojects {
  afterEvaluate {project ->
      if (project.hasProperty("android")) {
          android {
              buildToolsVersion "28.0.3"
              compileSdkVersion 28
          }
      }
  }
}

subprojects {
  afterEvaluate {project ->
      if (project.hasProperty("android")) {
          android {
              compileSdkVersion 29
              buildToolsVersion '29.0.3'
          }
      }
  }
}
Run Code Online (Sandbox Code Playgroud)

packages

    E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #3
        java.lang.NoSuchMethodError: No virtual method setSkipClientToken(Z)V in class Lcom/facebook/GraphRequest; or its super classes (declaration of 'com.facebook.GraphRequest' appears in /data/app/~~aLf3pfLySq5u7zpIAr2Hlg==/com.package-name-99h4GcP3GNx2sMs76AXGvA==/base.apk)
            at com.facebook.marketing.internal.RemoteConfigManager.getRemoteConfigQueryResponse(RemoteConfigManager.java:87)
            at com.facebook.marketing.internal.RemoteConfigManager.access$000(RemoteConfigManager.java:43)
            at com.facebook.marketing.internal.RemoteConfigManager$1.run(RemoteConfigManager.java:64)
            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
            at java.lang.Thread.run(Thread.java:923)
Run Code Online (Sandbox Code Playgroud)

Muh*_*mer 5

我们通过替换解决了这个问题

implementation 'com.facebook.android:facebook-marketing:[4,5)'
Run Code Online (Sandbox Code Playgroud)

经过

implementation 'com.facebook.android:facebook-marketing:latest.release'
Run Code Online (Sandbox Code Playgroud)

android/app/build.gradle文件中。

发布此内容是为了让遇到同样问题的人可以轻松找到解决方案。我和我的团队花了大约一天半的时间才弄清楚这个问题,因为没有明确的解决方案。

解决方案参考:这里