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 ,所以一直都是沒問題的,當跑在低版本時突然出問題了。
找了很多資料,在我的項目中是由於 multiDex 配置原因。
因爲在 Android5.0 以前使用 multidex 需要引入Google提供的 android-support-multidex.jar 這個jar包。
在 AndroidStudio 和 Gradle 編譯環境中,如果要使用 multidex,首先要使用 Android SDK Build Tools 21.1 及以上版本。接着修改工程中 app 目錄下的 build.gradle 文件,在 defaultConfig 中添加 multiDexEnabled true
接着在 dependencies 中添加依賴 compile 'com.android.support:multidex:1.0.3'
最後在代碼中加入支持 multidex 的功能,有三種方案可選
第一種方案:在 manifest 文件中指定 Application 爲 MultiDexApplication
第二種方案:讓應用的 Application 繼承 MultiDexApplication
MultiDex.install(this)
,這個方法比 Application 的 onCreate 要先執行。