java.lang.RuntimeException: Unable to get provider cn.jpush.android.service.DataProvider: java.la...

Android Studio 3.1.2 報錯:

java.lang.RuntimeException: Unable to get provider cn.jpush.android.service.DataProvider: java.lang.ClassNotFoundException: Didn't find class "cn.jpush.android.service.DataProvider" on path: /data/app/com.example.testapp-2.apk

錯誤原因

測試機器: HTC 802d (Android 4.2.2 API 17)
之前都是跑在我自己的手機上,Mix2 Android 8.0 ,所以一直都是沒問題的,當(dāng)跑在低版本時突然出問題了。
找了很多資料,在我的項目中是由于 multiDex 配置原因。
因為在 Android5.0 以前使用 multidex 需要引入Google提供的 android-support-multidex.jar 這個jar包。

解決步驟

  • 在 AndroidStudio 和 Gradle 編譯環(huán)境中,如果要使用 multidex,首先要使用 Android SDK Build Tools 21.1 及以上版本。接著修改工程中 app 目錄下的 build.gradle 文件,在 defaultConfig 中添加 multiDexEnabled true

  • 接著在 dependencies 中添加依賴 compile 'com.android.support:multidex:1.0.3'

  • 最后在代碼中加入支持 multidex 的功能,有三種方案可選

  1. 第一種方案:在 manifest 文件中指定 Application 為 MultiDexApplication


    multidex01.png
  1. 第二種方案:讓應(yīng)用的 Application 繼承 MultiDexApplication
  2. 第三種方案:如果不想讓應(yīng)用的 Application 繼承 MultiDexApplication,還可以選擇重寫 Application 的 attachBaseContext 方法,在該方法里面加入 MultiDex.install(this) ,這個方法比 Application 的 onCreate 要先執(zhí)行。
    multidex03.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容