java.lang.ClassNotFoundException:找不到类“ com.google.android.gms.ads.MobileAdsInitProvider” [英] java.lang.ClassNotFoundException: Didn't find class "com.google.android.gms.ads.MobileAdsInitProvider"

查看:145
本文介绍了java.lang.ClassNotFoundException:找不到类“ com.google.android.gms.ads.MobileAdsInitProvider”的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在Android 4.4及以下版本中遇到此问题。我已经集成了Google admob,当我运行该应用程序时,该应用程序崩溃,并显示ClassNotFoundException。

I am facing this issue in Android Version 4.4 and below. I have integrated Google admob and when I run the app, the app crashes with ClassNotFoundException.

请在下面找到堆栈跟踪。

Please find the stacktrace below.

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上查找,但找不到此问题。请社区提供帮助。

I have tried looking on google but couldn't find this problem. Requesting the community to please help on this.

注意:请注意,我已经在Android Manifest中添加了移动广告元数据。

Note: Please note that I have already added mobile ads meta-data in Android Manifest already.

推荐答案

您收到此错误,因为您使用过multiDex,但是缺少一些实现部分。请按照以下步骤解决该错误。

You are getting this error because you have use multiDex but some implementation part is missing. Follow below steps to resolve the error.

1)在应用级gradle文件的defaultconfig中添加 multiDexEnabled true

1) Add "multiDexEnabled true" in defaultconfig in app-level gradle file

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

2)如果您的minSdkVersion小于21然后在下方添加依赖项。

2) If your minSdkVersion is less than 21 then add below dependency.

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

3)使用MultiDexApplication类作为Application类。有三种方法可以将MultiDexApplication用作Application类

3) Use MultiDexApplication class as Application class. There are three way to use MultiDexApplication as Application class

i)只需在AndroidManifest.xml文件中设置MultiDexApplication类

i) Just set MultiDexApplication class in AndroidManifest.xml file

<?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

ii) If you are already using custom application class then extent MultiDexApplication in custom application class

public class MyApplication extends MultiDexApplication { ... }

iii)如果无法扩展MultiDexApplication,因为您已经扩展了其他类并且无法更改它,则在自定义应用程序类中使用以下方法

iii) If it is not possible to extend MultiDexApplication because you already extend other class and can not change it then use below method in your custom application class

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

注意:我遇到了同样的错误,只是通过扩展MultiDexApplication类来解决

这篇关于java.lang.ClassNotFoundException:找不到类“ com.google.android.gms.ads.MobileAdsInitProvider”的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆