Android Studio 升級到3.0 提示 java.lang.NoClassDefFoundError的解決方法
解決方法
首先把方法寫出來,起因和經(jīng)過和原理寫在后面,時(shí)間倉促的直接看解決方法吧。
一般出現(xiàn)這個(gè)錯(cuò)都是使用的provided導(dǎo)致的
例如,我的舊配置如下:
Project build.gradle文件:
buildscript { dependencies { classpath 'com.android.tools.build:gradle:3.0.1' // need delete in gradle3.x version classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8' } } Module build.gradle文件: apply plugin: 'com.android.library' apply plugin: 'android-apt' android { // ... } configurations { provided } dependencies { // ... // Fyber Annotations provided 'com.fyber:fyber-annotations:1.3.0' apt 'com.fyber:fyber-annotations-compiler:1.4.0' // ... }
改為最新的build.gradle3.x 的配置:
Project build.gradle文件:
buildscript { dependencies { classpath 'com.android.tools.build:gradle:3.0.1' } } Module build.gradle文件: apply plugin: 'com.android.library' android { // ... // add this code to enable annotationProcessor javaCompileOptions { annotationProcessorOptions { includeCompileClasspath = true } } } dependencies { // ... // Fyber Annotations compileOnly 'com.fyber:fyber-annotations:1.3.0' annotationProcessor 'com.fyber:fyber-annotations-compiler:1.4.0' // ... }
更改完以上配置在build Project后即可成功運(yùn)行了。如果不能請往下看:
注意事項(xiàng):
上面的Module build.gralde的配置必須寫在使用注解所在的 Module 中!
例如我在 Module A中的 MainActivity 使用了 @FyberSDK的注解,那么我將上述配置寫在Module A的build.gralde 文件中。
@FyberSDK public class MainActivity extends BaseActivity<MainPresenter, MainModel> implements IBannerDelegate, IMainView, View.OnClickListener { //.... }
補(bǔ)充相關(guān)知識
關(guān)于 apt 的介紹
1、什么是APT?
APT(Annotation Processing Tool)是一種處理注釋的工具,它對源代碼文件進(jìn)行檢測找出其中的Annotation,根據(jù)注釋自動生成代碼。Annotation處理器在出來Annotation時(shí)可以根據(jù)源文件中的Annotation生成額外的源文件和其它的文件(文件具體內(nèi)容由Annotation處理器的編寫者決定),APT還會編譯生成的源文件和原來的源文件,將它們一起生成class文件。
2、annotationProcessor
annotationProcessor是APT工具中的一種,他是google開發(fā)的內(nèi)置框架,不需要引入,可以直接在build.gradle文件中使用
3、android-apt
android-apt是由一位開發(fā)者自己開發(fā)的apt框架,源代碼托管在這里,隨著Android Gradle 插件 2.2 版本的發(fā)布,Android Gradle 插件提供了名為 annotationProcessor 的功能來完全代替 android-apt ,自此android-apt 作者在官網(wǎng)發(fā)表聲明最新的Android Gradle插件現(xiàn)在已經(jīng)支持annotationProcessor,并警告和或阻止android-apt ,并推薦大家使用 Android 官方插件annotationProcessor。
其他
新配置 | 對應(yīng)的過時(shí)配置 | 描述 |
---|---|---|
implementation | compile | module編譯時(shí)可用,module的使用者運(yùn)行時(shí)可用,對于大量使用library的項(xiàng)目,可以顯著提高編譯時(shí)間,因?yàn)樗梢詼p少構(gòu)建系統(tǒng)重新編譯一些module.大多數(shù)app/test因?yàn)槭褂眠@種配置 |
api | compile | module編譯時(shí)可用,module的使用者編譯和運(yùn)行時(shí)可用,這個(gè)和過時(shí)的compile一樣的。一般是library模塊會使用它,如果app模塊一定要使用它,必須是在它想暴露api給test模塊使用 |
compileOnly | provided | module 編譯時(shí)可用,但是module的使用者,在編譯和運(yùn)行時(shí)均不可用。跟過時(shí)的provided一樣的。 |
runtimeOnly | apk | module和它的使用者,運(yùn)行時(shí)可用.它跟過時(shí)的apk是一樣. |
總結(jié)
以上所述是小編給大家介紹的Android Studio 升級到3.0 提示 java.lang.NoClassDefFoundError,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時(shí)回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
- 解決java.lang.NoClassDefFoundError錯(cuò)誤的問題
- java.lang.NoClassDefFoundError錯(cuò)誤的原因及解決方法
- maven引入本地jar包運(yùn)行報(bào)錯(cuò)java.lang.NoClassDefFoundError解決
- 解決java.lang.NoClassDefFoundError: android.support.v4.animation.AnimatorCompatHelper問題
- SpringBoot異常: nested exception is java.lang.NoClassDefFoundError: javax/servlet/ServletContext解決方案
- 解決java.lang.NoClassDefFoundError:lombok/Data報(bào)錯(cuò)問題
相關(guān)文章
Android錄音--AudioRecord、MediaRecorder的使用
本篇文章主要介紹了Android錄音--AudioRecord、MediaRecorder的使用,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-02-02Android開發(fā)之使用ViewPager實(shí)現(xiàn)圖片左右滑動切換效果
這篇文章主要介紹了Android開發(fā)之使用ViewPager實(shí)現(xiàn)圖片左右滑動切換效果的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-08-08簡單實(shí)現(xiàn)Android倒計(jì)時(shí)效果
這篇文章主要教大家如何簡單的實(shí)現(xiàn)Android倒計(jì)時(shí)效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-10-10Android自定義viewGroup實(shí)現(xiàn)點(diǎn)擊動畫效果
這篇文章主要介紹了Android自定義viewGroup實(shí)現(xiàn)點(diǎn)擊動畫效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-12-12Kotlin實(shí)現(xiàn)網(wǎng)絡(luò)圖片下載和保存功能
根據(jù)Android多線程和網(wǎng)絡(luò)編程的知識講解和案例使用,使用Handler消息機(jī)制實(shí)現(xiàn)網(wǎng)絡(luò)圖片下載,并且保存到模擬器中,強(qiáng)化對Android多線程編程、網(wǎng)絡(luò)編程和文件讀寫的理解,這篇文章主要介紹了Kotlin實(shí)現(xiàn)網(wǎng)絡(luò)圖片下載和保存功能,需要的朋友可以參考下2023-02-02Android中制作自定義dialog對話框的實(shí)例分享
這篇文章主要介紹了Android中制作自定義dialog對話框的實(shí)例分享,安卓自帶的Dialog顯然不夠用,因而我們要繼承Dialog類來制作自己的對話框,需要的朋友可以參考下2016-04-04Android設(shè)備adb連接后顯示device unauthorized解決方案
這篇文章主要為大家介紹了Android設(shè)備adb連接后顯示device unauthorized解決方案詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06android實(shí)現(xiàn)簡單的畫畫板實(shí)例代碼
畫畫板實(shí)現(xiàn)起來其實(shí)很簡單,我們只需要利用android給我們提供的Canvas類來操作就可以實(shí)現(xiàn)簡單的畫畫功能2014-01-01