Android 使用.aar文件时出现NoClassDefFoundError
我有一个.aar文件,我把它添加到libs文件夹中,在gradle中我有Android 使用.aar文件时出现NoClassDefFoundError,android,Android,我有一个.aar文件,我把它添加到libs文件夹中,在gradle中我有 compile(name:'file-name', ext:'aar') 它编译得很好,但当我运行它时,我得到: System.err: java.lang.NoClassDefFoundError: com.app.foo.MUtil$3 现在,这个多类用于.aar库的API方法中我在我的应用程序中使用。我可以在分解的aar文件夹中看到MUtil类,我甚至可以通过按住ctrl键并单击其用法来访问该类。但是仍然NoCl
compile(name:'file-name', ext:'aar')
它编译得很好,但当我运行它时,我得到:
System.err: java.lang.NoClassDefFoundError: com.app.foo.MUtil$3
现在,这个多类用于.aar库的API方法中我在我的应用程序中使用。我可以在分解的aar文件夹中看到MUtil类,我甚至可以通过按住ctrl键并单击其用法来访问该类。但是仍然NoClassDefFoundError
。为什么?
渐变文件
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'
}
在运行时中的类定义不可用时引发
最后
根据Javadoc,在链接或
类文件的加载。它由java.lang.NoClassDefFoundError表示
当特定类在编译时出现时出现
但有些在运行时不可用
您可以共享您的build.gradle。aar
文件的最常见错误
清理重建重新启动同步&重试
编辑
buildToolsVersion "23.0.1"
验证应用程序的类路径中是否包含所有必需的Java类
如何?我加了渐变code@Housefly当我包含一个库时,我遇到了这个问题,但它需要一些其他包(例如,它需要gson
库)。我不知道,因为它没有写在文档中,但我问了开发人员,他们告诉了我me@Housefly设置看起来很完美。您能提供xx.xxx.xxxx:xx xxx??它的秘密?@IntelliJAmiya是的,API只是为我们提供的,仍然处于alpha阶段。@Nikola看起来这就是问题所在。我只是看了一下MUtil类的导入是否有遗漏的东西。所以我把它们也加入了我的渐变中。但在理想情况下,我必须将所有依赖项添加到gradle?这可能是因为没有定义正确的proguardrules@thepoosh但我不认为Proguard在调试方面更有效,因为我启用了minifyEnabled false
,即使是在发布时也是如此
buildToolsVersion "23.0.1"