web-dev-qa-db-ja.com

NoClassDefFoundError:com.google.firebase.FirebaseOptions

使用している他のテストデバイス(4.4.2)でNoClassDefFoundErrorを取得し続けます。しかし、私のテストデバイス(Android 5.1)では問題なく動作します。

私がググったソリューションを試しましたが、何も機能しないようです。

Firebase Realtime Databaseを使用しています。誰か助けてもらえますか?

これはエラーログです:

06-03 01:36:29.607 2655-2655/mobapps.mypersonal.biz.grouptracker E/dalvikvm: Could not find class 'com.google.firebase.FirebaseOptions', referenced from method com.google.firebase.FirebaseApp.<init> 06-03 01:36:29.617 2655-2655/mobapps.mypersonal.biz.grouptracker E/dalvikvm: Could not find class 'com.google.firebase.FirebaseApp$zzb', referenced from method com.google.firebase.FirebaseApp.zzaJ 06-03 01:36:29.621 2655-2655/mobapps.mypersonal.biz.grouptracker E/dalvikvm: Could not find class 'com.google.firebase.FirebaseApiNotAvailableException', referenced from method com.google.firebase.FirebaseApp.getToken 06-03 01:36:29.629 2655-2655/mobapps.mypersonal.biz.grouptracker E/dalvikvm: Could not find class 'com.google.firebase.FirebaseApp$zza', referenced from method com.google.firebase.FirebaseApp.zza 06-03 01:36:29.639 2655-2655/mobapps.mypersonal.biz.grouptracker E/AndroidRuntime: FATAL EXCEPTION: main
    Process: mobapps.mypersonal.biz.grouptracker, PID: 2655
    Java.lang.NoClassDefFoundError: com.google.firebase.FirebaseOptions
        at com.google.firebase.FirebaseApp.zzbu(Unknown Source)
        at com.google.firebase.provider.FirebaseInitProvider.onCreate(Unknown Source)
        at Android.content.ContentProvider.attachInfo(ContentProvider.Java:1656)
        at Android.content.ContentProvider.attachInfo(ContentProvider.Java:1627)
        at com.google.firebase.provider.FirebaseInitProvider.attachInfo(Unknown Source)
        at Android.app.ActivityThread.installProvider(ActivityThread.Java:5079)
        at Android.app.ActivityThread.installContentProviders(ActivityThread.Java:4653)
        at Android.app.ActivityThread.handleBindApplication(ActivityThread.Java:4593)
        at Android.app.ActivityThread.access$1500(ActivityThread.Java:151)
        at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1402)
        at Android.os.Handler.dispatchMessage(Handler.Java:110)
        at Android.os.Looper.loop(Looper.Java:193)
        at Android.app.ActivityThread.main(ActivityThread.Java:5363)
        at Java.lang.reflect.Method.invokeNative(Native Method)
        at Java.lang.reflect.Method.invoke(Method.Java:515)
        at com.Android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.Java:828)
        at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:644)
        at dalvik.system.NativeStart.main(Native Method)
10
sirking1991

これは私にとって問題を解決したものです:

  1. Compile 'com.Android.support:multidex:1.0.2'をapp/build.gradleに追加します。

  2. Android:name = "Android.support.multidex.MultiDexApplication"AndroidManifest.xmlのアプリケーションタグに追加します。

    カスタムアプリケーションクラスを使用している場合は、AndroidManifest.xmlをスキップして、アプリケーションの代わりにアプリケーションクラスを拡張MultiDexApplicationします。

14
Minas Mina

このバグは、リビジョン28、29を中心とした新しいバージョンで報告され、新しいPlayサービスバージョンで解決されているため、この問題が発生した場合は、Android古いバージョンにあるため、スタジオ。Playサービスのバージョンを更新するには...

次の手順を実行します:

  1. Android SDK Managerに移動します
  2. 以下の画像に示すように、ここでExtraに移動し、最新バージョンに更新して、プロジェクトを実行してみます。

enter image description here

次に、アプリケーションでMultiDexを使用している場合は、正しく実行したことを確認してください。

あなたAppレベルのBuild.Gradleファイルでは、このコードを使用しますmultiDexEnabled true

 defaultConfig {
        applicationId "com.reversebits.tapanhp.saffer"
        minSdkVersion 17
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
        multiDexEnabled true
    }

MultiDex依存関係を同じファイル内のdependenciesに適用します。

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])

    testCompile 'junit:junit:4.12'

    compile 'com.google.Android.gms:play-services:9.4.0'
    compile 'com.Android.support:multidex:1.0.1'
}

次に、AndroidMenifest.xmlファイル内で、ApplicationタグにMultiDexApplication

<application
        Android:name="Android.support.multidex.MultiDexApplication"
        Android:allowBackup="true">

注意

独自のアプリケーションクラスがあり、それをメニフェストファイルで使用している場合は、でmultidexを初期化できます。アプリケーションクラスは次のとおりです。

public class AppClass extends Application {

    //this will initialize multidex in your own Application class
    @Override
    protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);
        MultiDex.install(this);
    }

}
2
TapanHP

上記のTapanHPのおかげで、これはすぐに機能しました:

短い答え:

multiDexEnabled= trueに設定app/build.gradleファイルと、これはAndroid 5.xx上で問題なく実行されましたが、4.xx(キットカット)を備えたテストデバイスは重大なエラーをスローします "残念ながら、YourAppNameが停止しました。 "

デバッガーが示した:

Could not find class 'com.google.firebase.FirebaseOptions' ....

注:Applicationを拡張するカスタムクラスもあります。

My Solution:カスタムアプリケーションクラスに次のコードを追加しました

import Android.support.multidex.MultiDex;
public class YourCustomApplication extends Application {

    @Override
    protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);
        MultiDex.install(this);
    }

...
} 

これ以上の重大なクラッシュはありません。

1
ritchie.a

私は同じ問題を抱えていますが、これで解決しました:

https://stackoverflow.com/a/37364044

Android:name=".app"Android:name="Android.support.multidex.MultiDexApplication"に置き換える必要があります

0
Lyon