greenDao3.0+gradle3.0.1 NoClassDefFoundError

今天,不堪android studio升級提示的持續騷擾,終於屈服了~~ 我將com.android.tools.build:gradle升級到了3.0.1;

隨之而來的`distributionUrl=https://services.gradle.org/distributions/gradle-4.1-all.zip`也需要升級到4.1.

本以爲這樣就結束了,但是....在編譯運行項目代碼的時候,出現了這個錯誤:
No pending exception expected: java.lang.NoClassDefFoundError: org.greenrobot.greendao.database.DatabaseOpenHelper$EncryptedHelper
12-25 11:02:03.203 16990-16990/com.rencarehealth.mirhythm A/art: art/runtime/thread.cc:1336]   at java.lang.Class dalvik.system.DexFile.defineClassNative(java.lang.String, java.lang.ClassLoader, java.lang.Object) (DexFile.java:-2)
12-25 11:02:03.203 16990-16990/com.rencarehealth.mirhythm A/art: art/runtime/thread.cc:1336]   at java.lang.Class dalvik.system.DexFile.defineClass(java.lang.String, java.lang.ClassLoader, java.lang.Object, java.util.List) (DexFile.java:226)
12-25 11:02:03.203 16990-16990/com.rencarehealth.mirhythm A/art: art/runtime/thread.cc:1336]   at java.lang.Class dalvik.system.DexFile.loadClassBinaryName(java.lang.String, java.lang.ClassLoader, java.util.List) (DexFile.java:219)
12-25 11:02:03.203 16990-16990/com.rencarehealth.mirhythm A/art: art/runtime/thread.cc:1336]   at java.lang.Class dalvik.system.DexPathList.findClass(java.lang.String, java.util.List) (DexPathList.java:338)
12-25 11:02:03.204 16990-16990/com.rencarehealth.mirhythm A/art: art/runtime/thread.cc:1336]   at java.lang.Class dalvik.system.BaseDexClassLoader.findClass(java.lang.String) (BaseDexClassLoader.java:54)
12-25 11:02:03.204 16990-16990/com.rencarehealth.mirhythm A/art: art/runtime/thread.cc:1336]   at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:511)
12-25 11:02:03.204 16990-16990/com.rencarehealth.mirhythm A/art: art/runtime/thread.cc:1336]   at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:469)
項目也啓動不了。。。把gradle恢復到之前的版本,又沒有問題了...我的內心是崩潰的。如果繼續用以前的版本,又會天天蹦出來升級提示(雖然這個提示可以關閉),所以還是認真想想辦法,解決這個問題吧。。

看問題的提示,是DexFile的問題,於是一直在這個`com.android.support:multidex:1.0.0`以及application中的Multidex中嘗試解決問題,但是一直搞不定這個問題。

後來再繼續查找解決方法,發現這個文章文章中說明了這個問題

http://www.jincanshen.com/2016/10/29/Android-greendao3-0/

於是按照這篇文章的解決方法,在app的gradle中增加加密庫的依賴:
compile 'net.zetetic:android-database-sqlcipher:3.5.2'
問題還真解決了!~~ 什麼情況!

文章中說明了,“greenDao3.0支持加密 在3.0.1進行了合併”,我這個greendao命名已經是3.2.0版本了,爲什麼還需要引入這個加密庫呢。!~

再繼續查閱吧~到greendao的官網看看吧

這裏寫圖片描述

從這裏看到,greendao只是support了SQLClipher加密庫,但並沒有合併額!~ 好吧~原來問題在這裏,還是老老實實的把加密庫加上吧!~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章