将gradle依赖项添加到库aar包中

时间:2015-12-25 17:53:56

标签: android android-gradle aar

我正在为供应商制作一个图书馆项目,它需要Android Volley作为依赖项。我已使用此Create aar file in Android Studio创建.aar文件,并将其包含在我使用此Adding local .aar files to Gradle build using "flatDirs" is not working的测试项目中。库链接正常,项目编译中没有错误。但是在运行时,测试应用程序崩溃说它无法找到Volley

java.lang.NoClassDefFoundError: Failed resolution of: Lcom/android/volley/toolbox/Volley;
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.android.volley.toolbox.Volley" on path: DexPathList[[zip file "/data/app/in.gridsync.acttest-1/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]
Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available

库项目的My Gradle文件就像这样

    apply plugin: 'com.android.library'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.1"

    defaultConfig {
        minSdkVersion 14
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.1.0'
    compile 'com.mcxiaoke.volley:library:1.0.19'
}

在测试项目中,gradle就是这个

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.1"

    defaultConfig {
        applicationId "in.gridsync.acttest"
        minSdkVersion 14
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile project(':openapp-library')
    compile fileTree(include: ['*.jar'], dir: 'libs')
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.1.0'
}

我假设,当创建.aar包时,它会使用并包含它对Volley库的依赖。有人可以对此有所了解吗?

2 个答案:

答案 0 :(得分:1)

据我所知,你必须添加" @ aar"对于.aar库。此外,jar文件并不是必需的,它会自行下载。 试试这个:

compile 'com.mcxiaoke.volley:library:1.0.19@aar'

答案 1 :(得分:-1)

一种替代解决方案是将依赖库作为静态jar文件放在项目的“libs”文件夹中,而不是使用gradle依赖项。生成aar文件时,libs文件夹下的jar文件将包含在aar中。