我有一个.aar文件,我添加到libs文件夹和gradle里面我有
compile(name:'file-name', ext:'aar')
它编译得很好,但是当我运行它时,我得到:
System.err: java.lang.NoClassDefFoundError: com.app.foo.MUtil$3
现在,我在我的应用中使用的 .aar库的API方法中使用了 MUtil类。我可以在爆炸的aar文件夹中看到MUtil类,我甚至可以通过 ctrl + click 来查看它的用法。但仍然 NoClassDefFoundError
。为什么呢?
Gradle文件
apply plugin: 'com.android.application'
apply plugin: 'maven'
apply plugin: 'com.neenbedankt.android-apt'
repositories {
mavenCentral()
maven { url 'https://clojars.org/repo/' }
maven { url 'https://oss.sonatype.org/content/repositories/snapshots' }
flatDir {
dirs 'libs'
}
}
android {
compileSdkVersion 23
buildToolsVersion "22.0.1"
defaultConfig {
applicationId "com.xxx.xxx"
minSdkVersion 16
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
packagingOptions {
exclude 'META-INF/services/javax.annotation.processing.Processor'
}
productFlavors {
}
lintOptions {
abortOnError false
}
}
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.4'
classpath 'com.android.tools.build:gradle:1.2.3'
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:cardview-v7:23.0.+'
compile 'com.android.support:recyclerview-v7:23.0.+'
compile 'com.android.support:appcompat-v7:23.1.1'
compile('xx.xxx.xxxx:xx-xxx:0.1.2@aar') {
transitive = true
}
}
task wrapper(type: org.gradle.api.tasks.wrapper.Wrapper) {
gradleVersion = '2.5'
}
答案 0 :(得分:1)
System.err: java.lang.NoClassDefFoundError: com.app.foo.MUtil$3
当类的定义在运行时期间不可用时抛出。
最后
根据Javadoc NoClassDefFoundError可以在链接期间抛出或 加载类文件。它由java.lang.NoClassDefFoundError表示 并且在编译期间出现该特定类时 但有些在运行时不可用。
您可以分享 build.gradle 。 aar
文件的最常见错误。
清洁 - 重建 - 重启 - 同步&再试一次。
修改强>
buildToolsVersion "23.0.1"