中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android Studio 升級到3.0 提示 java.lang.NoClassDefFoundError錯誤怎么辦

發布時間:2021-07-13 15:16:23 來源:億速云 閱讀:158 作者:小新 欄目:移動開發

這篇文章主要介紹了Android Studio 升級到3.0 提示 java.lang.NoClassDefFoundError錯誤怎么辦,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

解決方法

首先把方法寫出來,起因和經過和原理寫在后面,時間倉促的直接看解決方法吧。

一般出現這個錯都是使用的provided導致的

例如,我的舊配置如下:

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 {
  //....
  }

補充相關知識

關于 apt 的介紹

1、什么是APT?

APT(Annotation Processing Tool)是一種處理注釋的工具,它對源代碼文件進行檢測找出其中的Annotation,根據注釋自動生成代碼。Annotation處理器在出來Annotation時可以根據源文件中的Annotation生成額外的源文件和其它的文件(文件具體內容由Annotation處理器的編寫者決定),APT還會編譯生成的源文件和原來的源文件,將它們一起生成class文件。

2、annotationProcessor

annotationProcessor是APT工具中的一種,他是google開發的內置框架,不需要引入,可以直接在build.gradle文件中使用

3、android-apt

android-apt是由一位開發者自己開發的apt框架,源代碼托管在這里,隨著Android Gradle 插件 2.2 版本的發布,Android Gradle 插件提供了名為 annotationProcessor 的功能來完全代替 android-apt ,自此android-apt 作者在官網發表聲明最新的Android Gradle插件現在已經支持annotationProcessor,并警告和或阻止android-apt ,并推薦大家使用 Android 官方插件annotationProcessor。

其他

新配置對應的過時配置描述
implementationcompilemodule編譯時可用,module的使用者運行時可用,對于大量使用library的項目,可以顯著提高編譯時間,因為它可以減少構建系統重新編譯一些module.大多數app/test因為使用這種配置
apicompilemodule編譯時可用,module的使用者編譯和運行時可用,這個和過時的compile一樣的。一般是library模塊會使用它,如果app模塊一定要使用它,必須是在它想暴露api給test模塊使用
compileOnlyprovidedmodule 編譯時可用,但是module的使用者,在編譯和運行時均不可用。跟過時的provided一樣的。
runtimeOnlyapkmodule和它的使用者,運行時可用.它跟過時的apk是一樣.

感謝你能夠認真閱讀完這篇文章,希望小編分享的“Android Studio 升級到3.0 提示 java.lang.NoClassDefFoundError錯誤怎么辦”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

山阳县| 嘉禾县| 云霄县| 渭源县| 手游| 阿尔山市| 五大连池市| 安泽县| 白银市| 凉山| 唐河县| 九台市| 青铜峡市| 苍溪县| 常熟市| 黄龙县| 和林格尔县| 开阳县| 临潭县| 沁阳市| 波密县| 博野县| 兴国县| 长宁县| 威远县| 兴业县| 安顺市| 都匀市| 清新县| 沐川县| 新兴县| 景德镇市| 古蔺县| 河池市| 建瓯市| 岱山县| 五原县| 承德市| 甘洛县| 横峰县| 奇台县|