使用している他のテストデバイス(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)
これは私にとって問題を解決したものです:
Compile 'com.Android.support:multidex:1.0.2'をapp/build.gradleに追加します。
Android:name = "Android.support.multidex.MultiDexApplication"をAndroidManifest.xmlのアプリケーションタグに追加します。
カスタムアプリケーションクラスを使用している場合は、AndroidManifest.xmlをスキップして、アプリケーションの代わりにアプリケーションクラスを拡張MultiDexApplicationします。
このバグは、リビジョン28、29を中心とした新しいバージョンで報告され、新しいPlayサービスバージョンで解決されているため、この問題が発生した場合は、Android古いバージョンにあるため、スタジオ。Playサービスのバージョンを更新するには...
次の手順を実行します:
次に、アプリケーションで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);
}
}
上記の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);
}
...
}
これ以上の重大なクラッシュはありません。
私は同じ問題を抱えていますが、これで解決しました:
https://stackoverflow.com/a/37364044
Android:name=".app"
をAndroid:name="Android.support.multidex.MultiDexApplication"
に置き換える必要があります