debug模式執行報錯ClassNotFoundException 解決方法
前奏:
連續一個月的高強度開發接近尾聲,昨天拿到設計logo準備換上,但是一直不生效。
<application android:name="com.example.lenovo.zhongye.ZhongYeApplication" android:allowBackup="true" android:icon="@mipmap/app_logo" // 更改圖片指向路徑 android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/Theme.AppCompat.Light.NoActionBar">
烏龍:
手機的主介面就是launcher本身就是應用,使用者點選圖示 startActivity 啟動程式。這樣想來的話,一直無法更改應用圖示應該是 launcher 存在快取的情況。
解決辦法:
重啟手機——各種百度,更改配置,浪費3個小時。最終解決是重啟。
言歸正傳,由於前面的烏龍事件,讓我發現另一個問題。測試機一直無法更改圖示,所以我想借用同事的android機看看是否有同樣的問題。然後我打包上傳蒲公英,生成二維碼發給同事,讓幫忙安裝下試一試。好訊息是安裝圖片改變,壞訊息是 程式點選崩潰,無法啟動。印象中之前遇到這樣的問題。解決辦法是直接發個release包測試。但是這個問題如鯁在喉,不出不快。
報錯資訊:java.lang.RuntimeException Unable to instantiate applicationCaused by: java.lang.ClassNotFoundException: Didn't find class "com...activity
解決辦法:
專案build-gradle 降低你的gradle版本:
dependencies { // classpath 'com.android.tools.build:gradle:2.3.3' // 問題出現在gradle 2.3版本 classpath 'com.android.tools.build:gradle:2.2.3' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files }
參考:Android debug.apk 閃退 ClassNotFoundException 直接Run正常
我使用的降級方法,解決這個問題,還有種方法可以使用debug包,
生成測試所需debug.apk的時候使用 "Build" -> "Build APK" 生成,而非在裝置上直接"Run"這樣感覺不是很方便,
目前gradle高版本還不是我所需要的,所以我選擇降低處理。
原理:Android版本相容問題
高版本的裝置執行出的apk安裝在Android L以下的裝置上會報錯
低版本的裝置執行出的apk安裝在高版本裝置上正常
另外有人說,Google工程師的坑 gradle 3.3版本本身有問題。——仁者見仁,智者見智