這篇文章主要介紹了Android Studio 升級到3.0 提示 java.lang.NoClassDefFoundError錯誤怎么辦,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
創(chuàng)新互聯(lián)建站專注于企業(yè)網(wǎng)絡(luò)營銷推廣、網(wǎng)站重做改版、準格爾網(wǎng)站定制設(shè)計、自適應(yīng)品牌網(wǎng)站建設(shè)、H5網(wǎng)站設(shè)計、電子商務(wù)商城網(wǎng)站建設(shè)、集團公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為準格爾等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
解決方法
首先把方法寫出來,起因和經(jīng)過和原理寫在后面,時間倉促的直接看解決方法吧。
一般出現(xiàn)這個錯都是使用的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后即可成功運行了。如果不能請往下看:
注意事項:
上面的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 { //.... }
補充相關(guān)知識
關(guān)于 apt 的介紹
1、什么是APT?
APT(Annotation Processing Tool)是一種處理注釋的工具,它對源代碼文件進行檢測找出其中的Annotation,根據(jù)注釋自動生成代碼。Annotation處理器在出來Annotation時可以根據(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)的過時配置 | 描述 |
---|---|---|
implementation | compile | module編譯時可用,module的使用者運行時可用,對于大量使用library的項目,可以顯著提高編譯時間,因為它可以減少構(gòu)建系統(tǒng)重新編譯一些module.大多數(shù)app/test因為使用這種配置 |
api | compile | module編譯時可用,module的使用者編譯和運行時可用,這個和過時的compile一樣的。一般是library模塊會使用它,如果app模塊一定要使用它,必須是在它想暴露api給test模塊使用 |
compileOnly | provided | module 編譯時可用,但是module的使用者,在編譯和運行時均不可用。跟過時的provided一樣的。 |
runtimeOnly | apk | module和它的使用者,運行時可用.它跟過時的apk是一樣. |
感謝你能夠認真閱讀完這篇文章,希望小編分享的“Android Studio 升級到3.0 提示 java.lang.NoClassDefFoundError錯誤怎么辦”這篇文章對大家有幫助,同時也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!
當(dāng)前標題:AndroidStudio升級到3.0提示java.lang.NoClassDefFoundError錯誤怎么辦
網(wǎng)頁鏈接:http://aaarwkj.com/article0/pdigio.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站、動態(tài)網(wǎng)站、網(wǎng)站設(shè)計公司、網(wǎng)站建設(shè)、手機網(wǎng)站建設(shè)、服務(wù)器托管
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)