使用.aar文件时的NoClassDefFoundError

时间:2016-01-14 09:09:16

标签: android

我有一个.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'
}

1 个答案:

答案 0 :(得分:1)

System.err: java.lang.NoClassDefFoundError: com.app.foo.MUtil$3

NoClassDefFoundError

  当类的定义在运行时期间不可用时抛出

最后

  

根据Javadoc NoClassDefFoundError可以在链接期间抛出或   加载类文件。它由java.lang.NoClassDefFoundError表示   并且在编译期间出现该特定类时   但有些在运行时不可用。

您可以分享 build.gradle aar文件的最常见错误。

清洁 - 重建 - 重启 - 同步&再试一次。

修改

  buildToolsVersion "23.0.1"