2016-11-03 3 views
2

私はチャットアプリケーションを開発しています。これはアンドロイド21でもうまく動作しますが、この問題の原因となる18または19java.lang.ClassNotFoundException:クラスのアプリケーションを見つけられませんでした "DexPathList

11-03 01:49:22.676 20966から20966/E/AndroidRuntime: 致命的な例外:メイン プロセス:、PID:20966 java.lang.RuntimeException:アプリケーション .applicationのをインスタンス化することができません:ジャワ.lang.ClassNotFoundException: パスに "アプリケーション"クラスが見つかりませんでした: DexPathList [[zipファイル "/ data/a [/ data/app-lib/-9、 /vendor/lib、/ system/lib]] android.app.LoadedApk.makeApplication(LoadedApk.java:516) android.app.ActivityThread.access $ 1600〜) でandroid.app.ActivityThread.handleBindApplication(ActivityThread.java:4703) (ActivityThread.java:175) android.app.ActivityThread $ H.handleMessage(ActivityThreadで。 Javaの:1368) android.os.Handler.dispatchMessage(Handler.java:102) でandroid.app.ActivityThread.mainでandroid.os.Looper.loop(Looper.java:146) (ActivityThread.javaで: 5602) (ネイティブメソッド) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit .java:1283) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099) at dalvik.system.NativeStart.main(ネイティブメソッド) 原因:java.lang.ClassNotFoundException: tクラスの検索 パス上の "dev.karim.dardesh.Application":DexPathList [[zipファイル "/data/app/dev.karim.dardesh-9.apk"],nativeLibraryDirectories=[/data/app-lib/ dev.karim.dardesh-9、 /vendor/lib、/ system/lib]] dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:67)java.lang.ClassLoader.loadClass(ClassLoader.java:497)で java.lang.ClassLoader.loadClass(ClassLoader.java:457)で ででandroid.app.LoadedApk.makeApplicationで android.app.Instrumentation.newApplication(Instrumentation.java:981) android.app.ActivityThread.handleBindApplication(ActivityThread.java:4703)で(LoadedApk.java:511) でandroid.app.ActivityThread.access $ 1600(ActivityThread.java:175) at android.app.ActivityThread $ H.handleMessage(Acti vityThread.java:1368) (android.os.Handler.dispatchMessage(Handler.java:102) (android.os.Looper.loop(Looper.java:146) 、android.app.ActivityThread.main(ActivityThread。 java:5602) at java.lang.reflect.Method.invokeNative(ネイティブメソッド) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1283) com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099) at dalvik.system.NativeStartメイン(ネイティブメソッド)

と私は、アプリケーションクラス

public class Application extends android.app.Application{ 
    @Override 
    public void onCreate() { 
     super.onCreate(); 
     Firebase.setAndroidContext(this); 
    } 

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

Attachbasecontextを上書きし、Gradleのファイルに使用しています:

multiDexEnabled true 
    compile 'com.android.support:multidex:1.0.1' 

このGradleのファイル:

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 24 
    buildToolsVersion "24.0.3" 

    defaultConfig { 
     applicationId "pakage.com" 
     minSdkVersion 17 
     targetSdkVersion 24 
     versionCode 18 
     versionName "18" 
     multiDexEnabled true 
     testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 


     jackOptions { 
      enabled true 
      additionalParameters('jack.incremental': 'true') 
     } 
    } 

    compileOptions { 
     incremental true 
     sourceCompatibility JavaVersion.VERSION_1_8 
     targetCompatibility JavaVersion.VERSION_1_8 
    } 

    dexOptions { 
     preDexLibraries = false 
     javaMaxHeapSize '4096m' 
    } 

    buildTypes { 
     release { 
      minifyEnabled true 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 

     } 
    } 



    packagingOptions { 
     exclude 'META-INF/LICENSE' 
     exclude 'META-INF/NOTICE' 
     exclude 'META-INF/LICENSE-FIREBASE.txt' 
    } 




} 

dependencies { 
    compile fileTree(include: ['*.jar'], dir: 'libs') 
    compile 'com.android.support:appcompat-v7:24.2.1' 
    compile 'com.firebase:firebase-client-android:2.3.1' 
    compile 'com.android.support:design:24.2.1' 
    compile 'com.android.support:recyclerview-v7:24.2.1' 
    compile 'com.android.support:cardview-v7:24.2.1' 
    compile 'com.squareup.picasso:picasso:2.5.0' 
    compile 'com.android.support:support-v4:24.2.1' 
    compile 'com.google.android.gms:play-services-ads:9.8.0' 
    compile 'com.google.firebase:firebase-messaging:9.8.0' 
    compile 'com.google.firebase:firebase-auth:9.8.0' 
    compile 'com.google.android.gms:play-services:9.8.0' 
    compile 'com.google.firebase:firebase-core:9.8.0' 
    compile 'com.google.firebase:firebase-database:9.8.0' 
    compile 'com.android.support:multidex:1.0.1' 
    testCompile 'junit:junit:4.12' 
    compile 'com.google.android:support-v4:r7' 
} 


apply plugin: 'com.google.gms.google-services' 

さらに私のプロジェクトはfirebaseリアルタイムダtabase:

ヒント/ここにいないすべてのソリューションは私が解決している。

私は3.0にAndroidのメーカーを更新したときに、私は同じ問題を持っていた私に

+0

 multiDexEnabled true 

を追加し、あなたのアプリケーションの要素にMultiDexApplicationクラスを追加していますか? –

+0

こんにちは!あなたは解決策を見つけましたか?私は同じ問題を抱えています。 – Benobab

答えて

1

を助けてください。あなたもそれをした場合は、代わりに2.3バージョンを使用してください。私のために働いた!

0

アプリケーションとMultiDexを拡張するため、このガイドを見てみましょう:https://developer.android.com/studio/build/multidex.html

それは言う:

If you do override the Application class, change it to extend MultiDexApplication (if possible) as follows 

そして、他にClassNotFoundのための鉱山およびマルチDEX問題のこの回答:Why is my custom ButtonRenderer not working?

アピ21は次の理由で違いがあります。

Android 5.0 (API level 21) and higher uses a runtime called ART which natively supports loading multiple DEX files from APK files. ART performs pre-compilation at app install time which scans for classesN.dex files and compiles them into a single .oat file for execution by the Android device. Therefore, if your minSdkVersion is 21 or higher, you do not need the multidex support library. 
0

アプリレベルのbuild.gradle

関連する問題