我正在为供应商制作一个图书馆项目,它需要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库的依赖。有人可以对此有所了解吗?
答案 0 :(得分:1)
据我所知,你必须添加" @ aar"对于.aar库。此外,jar文件并不是必需的,它会自行下载。 试试这个:
compile 'com.mcxiaoke.volley:library:1.0.19@aar'
答案 1 :(得分:-1)
一种替代解决方案是将依赖库作为静态jar文件放在项目的“libs”文件夹中,而不是使用gradle依赖项。生成aar文件时,libs文件夹下的jar文件将包含在aar中。