java.lang.RuntimeException: Unable to get provider com.baidu.mobads.sdk.api.BdFileProvider

背景

最近公司项目里需要接入穿山甲聚合SDK来实现变现,按照接入文档接入后,启动 APP 发生崩溃问题找不到 Provider,以前笔者在使用其他聚合 SDK 时候也遇到过,折腾了不少时间,特意记录下

问题堆栈

java.lang.RuntimeException: Unable to get provider com.baidu.mobads.sdk.api.BdFileProvider: java.lang.ClassNotFoundException: Didn't find class "com.baidu.mobads.sdk.api.BdFileProvider" on path: DexPathList[[zip file "/data/app/~~8hntTYexlfTtRFaffd72wQ==/com.gxbc.android-xzw-f1IXfJ8nQA8EBy4nhQ==/base.apk"],nativeLibraryDirectories=[/data/app/~~8hntTYexlfTtRFaffd72wQ==/com.gxbc.android-xzw-f1IXfJ8nQA8EBy4nhQ==/lib/arm64, /data/app/~~8hntTYexlfTtRFaffd72wQ==/com.gxbc.android-xzw-f1IXfJ8nQA8EBy4nhQ==/base.apk!/lib/arm64-v8a, /system/lib64, /system_ext/lib64]]
                                                                                                        at android.app.ActivityThread.installProvider(ActivityThread.java:7776)
                                                                                                        at android.app.ActivityThread.installContentProviders(ActivityThread.java:7288)
                                                                                                        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:7028)
                                                                                                        at android.app.ActivityThread.access$1800(ActivityThread.java:254)
                                                                                                        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2184)
                                                                                                        at android.os.Handler.dispatchMessage(Handler.java:106)
                                                                                                        at android.os.Looper.loopOnce(Looper.java:233)
                                                                                                        at android.os.Looper.loop(Looper.java:344)
                                                                                                        at android.app.ActivityThread.main(ActivityThread.java:8212)
                                                                                                        at java.lang.reflect.Method.invoke(Native Method)
                                                                                                        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:584)
                                                                                                        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1034)

java.lang.RuntimeException: Unable to get provider com.baidu.mobads.sdk.api.BdFileProvider_第1张图片

原因分析

聚合SDK 需要把聚合的三方广告AAR打进包里,笔者项目里需要聚合百度、广点通和快手广告,但是却没有把下面的aar 也依赖上! 导致启动后找不到 这些广告SDK 的类。

java.lang.RuntimeException: Unable to get provider com.baidu.mobads.sdk.api.BdFileProvider_第2张图片

笔者原来的的依赖:(期望聚合百度、广点通和快手,却没有添加相应的AAR 包依赖)

    //穿山甲聚合SDK
    implementation "com.pangle.cn:mediation-sdk:5.7.0.5"  //融合SDK
    implementation "com.pangle.cn:mediation-ks-adapter:${adnKsVersion}${adnKsVersionFix}"
    implementation "com.pangle.cn:mediation-baidu-adapter:${adnBaiduVersion}${adnBaiduVersionFix}"
    implementation "com.pangle.cn:mediation-gdt-adapter:${adnGdtVersion}${adnGdtVersionFix}"

解决

1)在app libs 下添加相应的aar包,然后在app.gradle 里 增加 flatDir

android {
......
    repositories {
        flatDir {
            dirs 'libs'
        }
    }
......

}

2) dependencies修改如下:

def adnGdtVersion = "4.542.1412"
def adnGdtVersionFix = ".1"

def adnKsVersion = "3.3.53"
def adnKsVersionFix = ".1"

def adnBaiduVersion = "9.3223"
def adnBaiduVersionFix = ".1"


dependencies {
   
    implementation fileTree(include: ['*.jar'], dir: 'libs')

    ......
    //穿山甲聚合SDK
    implementation "com.pangle.cn:mediation-sdk:5.7.0.5"  //融合SDK
    implementation "com.pangle.cn:mediation-ks-adapter:${adnKsVersion}${adnKsVersionFix}"
    implementation(name: "kssdk-ad-${adnKsVersion}", ext: 'aar')
    implementation "com.pangle.cn:mediation-baidu-adapter:${adnBaiduVersion}${adnBaiduVersionFix}"
    implementation(name: "Baidu_MobAds_SDK_v${adnBaiduVersion}", ext: 'aar')
    implementation "com.pangle.cn:mediation-gdt-adapter:${adnGdtVersion}${adnGdtVersionFix}"
    implementation(name: "GDTSDK.unionNormal.${adnGdtVersion}", ext: 'aar')
    implementation "com.google.code.gson:gson:2.8.5"
}

3)记得app 工程libs文件夹下加上需要聚合的广告AAR

java.lang.RuntimeException: Unable to get provider com.baidu.mobads.sdk.api.BdFileProvider_第3张图片

你可能感兴趣的:(Android疑难杂症,android,android,studio)