java.lang.ClassNotFoundException: не нашел класс "com.google.android.gms.ads.MobileAdsInitProvider" - PullRequest
0 голосов
/ 14 января 2019

Я сталкиваюсь с этой проблемой в Android версии 4.4 и ниже. Я интегрировал Google admob, и при запуске приложения происходит сбой приложения с 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) 

Я пытался посмотреть в Google, но не смог найти эту проблему. Просьба к сообществу помочь в этом.

Примечание. Обратите внимание, что я уже добавил метаданные мобильной рекламы в манифест Android.

Ответы [ 2 ]

0 голосов
/ 03 апреля 2019
  1. Сначала сделайте multiDexEnable ture в android defaultConfig

    android {
        defaultConfig {
           minSdkVersion 14
           targetSdkVersion 22
           multiDexEnabled true
        }
    }
    
  2. Добавьте это в зависимости, если ваш minSdkVersion меньше 21.

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

0 голосов
/ 03 февраля 2019

Вы получаете эту ошибку, потому что вы использовали multiDex, но отсутствует часть реализации. Для устранения ошибки выполните следующие действия.

1) Добавить «multiDexEnabled true» в defaultconfig в файле gradle уровня приложения

android {
    defaultConfig {
        ...
        minSdkVersion 21
        targetSdkVersion 28
        multiDexEnabled true
    }
    ...
}

2) Если ваш minSdkVersion меньше 21, добавьте зависимость ниже.

dependencies {
  implementation 'com.android.support:multidex:1.0.3'
}

3) Использовать класс MultiDexApplication в качестве класса приложения. Существует три способа использования MultiDexApplication в качестве класса приложения

i) Просто установите класс MultiDexApplication в файле AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.myapp">
    <application
            android:name="android.support.multidex.MultiDexApplication" >
        ...
    </application>
</manifest>

ii) Если вы уже используете пользовательский класс приложения, тогда экстент MultiDexApplication в пользовательском классе приложения

public class MyApplication extends MultiDexApplication { ... }

iii) Если невозможно расширить MultiDexApplication, поскольку вы уже расширяете другой класс и не можете его изменить, используйте метод ниже в своем пользовательском классе приложения

public class MyApplication extends SomeOtherApplication {
  @Override
  protected void attachBaseContext(Context base) {
     super.attachBaseContext(base);
     MultiDex.install(this);
  }
}

Примечание. Я столкнулся с той же ошибкой и только что решил ее, расширив класс MultiDexApplication

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...