java.lang.NoSuchMethodError:静的メソッドはありませんisAtLeastR()Z


8

アプリは正常に動作していましたが、突然このエラーが発生し始めました

java.lang.NoSuchMethodError:クラスLandroidx / core / os / BuildCompat;に静的メソッドisAtLeastR()Zはありません。またはそのスーパークラス(「androidx.core.os.BuildCompat」の宣言は/data/app/com.app.goflatmates-RZKwS2h6hav==/base.apkにあります)のcom.google.android.gms.common.util。 PlatformVersion.isAtLeastR(com.google.android.gms:play-services-basement @@ 17.2.0:21)at com.google.android.gms.common.api.GoogleApi.zaa(com.google.android.gms: play-services-base @@ 17.2.0:128)com.google.android.gms.common.api.GoogleApi。(com.google.android.gms:play-services-base @@ 17.2.0:23)でcom.google.android.gms.common.api.GoogleApi。(com.google.android.gms:play-services-base @@ 17.2.0:54)at com.google.android.gms.auth.api。 signin.GoogleSignInClient。(Unknown Source:3)at com.google.android.gms.auth.api.signin。

問題はこの行に来ています

GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                .requestEmail()
                .build(); 

mGoogleSignInClient = GoogleSignIn.getClient(this, gso);

どういうわけか、androidx.core.os.BuildCompatfromコンパイルと実行は一致しません。
greybeard

回答:


11

React Nativeにもこの問題がありました。私はこれを私のapp / build.gradleに設定することで修正しました:

dependencies {
    // ...
    implementation 'com.google.android.gms:play-services-base:17.1.0'
    // ...
}

これは、2日前にGoogle play-services-baseライブラリによって導入された重大な変更によるものです。使用implementation 'com.google.android.gms:play-services-base:+'すると、ライブラリの最新バージョンがダウンロードされ、そのバグがアプリに導入されます。お役に立てば幸いです。


この問題がAndroid 10でのみ発生するのは不思議です。古いバージョンは問題なく動作していました。しかし、特定のバージョンに変更すると、すべてのバージョンで問題が解決しました。
Gabriel Guarnieri Cardoso

3
うん。また、変更内容を実際に文書化しなかったため、アプリがエラーをスローするまでわかりません。
Aditya Gune

1
ええ、男。Uが私の隔離された日を救った
Pavel Nikolaev

v 17.2.0にはいくつかの問題があります。v17.1.0へのダウングレードは私の日を救いました。新しいアップデートv17.2.1も機能するようです
Mishra

3
/**
     * Checks if the device is running on a pre-release version of Android R or newer.
     * <p>
     * <strong>Note:</strong> This method will return {@code false} on devices running release
     * versions of Android. When Android R is finalized for release, this method will be deprecated
     * and all calls should be replaced with {@code Build.VERSION.SDK_INT >= Build.VERSION_CODES.R}.
     *
     * @return {@code true} if R APIs are available for use, {@code false} otherwise
     */
    public static boolean isAtLeastR() {
        return VERSION.CODENAME.length() == 1 && VERSION.CODENAME.charAt(0) >= 'R'
                && VERSION.CODENAME.charAt(0) <= 'Z';
    }

Android Qは最終リリースであり、この方法は不要になりました。Support Libraryの将来のリリースで削除される予定です。

親切にダウングレードバージョン

 implementation 'com.google.android.gms:play-services-base:17.1.0'
 implementation 'com.google.android.gms:play-services-base:17.0.0' //OR

2

バグはcom.google.android.gms:play-services-base:17.2.0以前の回答にあり、17.1.0にダウングレードすることは正しかったが、Googleはこの問題を修正したため、17.2.1にアップグレードしても問題なく機能する。

これらの3つは一緒に更新されたので、それらを使用している場合はそれらをすべて上げてください。

com.google.android.gms:play-services-base:17.2.1
com.google.android.gms:play-services-basement:17.2.1
com.google.android.gms:play-services-tasks:17.0.2

出典:https : //developers.google.com/android/guides/releases


0

私はこれを私のapp / build.gradleに設定することで修正しました

dependencies {
    // ...
    configurations.all {
        resolutionStrategy.force 'com.google.android.gms:play-services-base:17.1.0'
    }
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.