web-dev-qa-db-ja.com

java.lang.ClassNotFoundException:クラス "com.google.Android.gms.ads.MobileAdsInitProvider"が見つかりませんでした

Androidバージョン4.4以前でこの問題に直面しています。Googleadmobを統合しました。アプリを実行すると、ClassNotFoundExceptionでアプリがクラッシュします。

以下のスタックトレースを見つけてください。

Process: app.learnkannada.com.learnkannadakannadakali, PID: 1320
Java.lang.RuntimeException: Unable to get provider com.google.Android.gms.ads.MobileAdsInitProvider: Java.lang.ClassNotFoundException: Didn't find class "com.google.Android.gms.ads.MobileAdsInitProvider" on path: DexPathList[[Zip file "/data/app/app.learnkannada.com.learnkannadakannadakali-2.apk"],nativeLibraryDirectories=[/data/app-lib/app.learnkannada.com.learnkannadakannadakali-2, /system/lib]]
    at Android.app.ActivityThread.installProvider(ActivityThread.Java:4793)
    at Android.app.ActivityThread.installContentProviders(ActivityThread.Java:4385)
    at Android.app.ActivityThread.handleBindApplication(ActivityThread.Java:4325)
    at Android.app.ActivityThread.access$1500(ActivityThread.Java:135)
    at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1256)
    at Android.os.Handler.dispatchMessage(Handler.Java:102)
    at Android.os.Looper.loop(Looper.Java:136)
    at Android.app.ActivityThread.main(ActivityThread.Java:5017)
    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:779)
    at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:595)
    at dalvik.system.NativeStart.main(Native Method)
 Caused by: Java.lang.ClassNotFoundException: Didn't find class "com.google.Android.gms.ads.MobileAdsInitProvider" on path: DexPathList[[Zip file "/data/app/app.learnkannada.com.learnkannadakannadakali-2.apk"],nativeLibraryDirectories=[/data/app-lib/app.learnkannada.com.learnkannadakannadakali-2, /system/lib]]
    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.Java:56)
    at Java.lang.ClassLoader.loadClass(ClassLoader.Java:497)
    at Java.lang.ClassLoader.loadClass(ClassLoader.Java:457)
    at Android.app.ActivityThread.installProvider(ActivityThread.Java:4778)
    at Android.app.ActivityThread.installContentProviders(ActivityThread.Java:4385) 
    at Android.app.ActivityThread.handleBindApplication(ActivityThread.Java:4325) 
    at Android.app.ActivityThread.access$1500(ActivityThread.Java:135) 
    at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1256) 
    at Android.os.Handler.dispatchMessage(Handler.Java:102) 
    at Android.os.Looper.loop(Looper.Java:136) 
    at Android.app.ActivityThread.main(ActivityThread.Java:5017) 
    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:779) 
    at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:595) 
    at dalvik.system.NativeStart.main(Native Method) 

私はグーグルで探してみましたが、この問題を見つけることができませんでした。コミュニティにこれを手伝ってくれるようにお願いします。

注:モバイル広告メタデータは既にAndroid Manifestに追加済みです。

6
Varun A M
  1. 最初にAndroid defaultConfigでmultiDexEnable機能を作成します

    Android {
        defaultConfig {
           minSdkVersion 14
           targetSdkVersion 22
           multiDexEnabled true
        }
    }
    
  2. MinSdkVersionが21未満の場合は、これを依存関係に追加します。

    implementation 'com.Android.support:multidex:1.0.3'

2
AppsBit AppsBit

'Build'> 'Clean Project'を実行しただけで動作します。

2
Leap Bun

同様のエラーが発生し、これで解決しました。

Android { 
    ...
    compileOptions {
        sourceCompatibility = 1.8
        targetCompatibility = 1.8
    }
}

上のMajid Mohammadが投稿した場所にはコメントしなかったので、回答を追加しました。

このエラーメッセージも表示されていました。私の場合、それはmultidexとは関係ありませんが、互換性のあるjavaversionと関係があります。

ファイル>>プロジェクト構造>>モジュール>>アプリ>>プロパティは、「ソース互換性」と「ターゲット互換性」を1.8(現在)に変更します。

または、「モジュール:アプリ」のbuild.gradle内(プロジェクトの下ではありません。)

Android { 
    ...
    compileOptions {
        sourceCompatibility = 1.8
        targetCompatibility = 1.8
    }
}

Lazybugへのすべての貢献: dexの検証に失敗しました:不正なメソッドハンドルタイプ7

0
Majid Mohammad