【发布时间】:2016-03-13 11:16:25
【问题描述】:
我有自己的 Gradle 依赖项的 Android Studio 库项目:
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.squareup.retrofit:retrofit:2.0.0-beta2'
compile 'com.squareup.retrofit:converter-gson:2.0.0-beta2'
}
问题在于这两个外部库(retrofit & converter-gson)。 这个库项目的结果是 .aar 文件。但是当我在一个单独的项目中使用这个 .aar 文件时,我得到了未解决的类错误:
java.lang.NoClassDefFoundError: Failed resolution of: Lretrofit/Retrofit$Builder;
有没有办法将我的库项目中的这些 gradle 依赖项包含到最终的 .aar 文件中?
我尝试了this answer,但它对我不起作用。
编辑: 我的整个 build.gradle 文件来自库项目。
apply plugin: 'com.android.library'
android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
defaultConfig {
minSdkVersion 15
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.squareup.retrofit:retrofit:2.0.0-beta2'
compile 'com.squareup.retrofit:converter-gson:2.0.0-beta2'
}
编辑 2: 这是我的应用项目中 build.gradle 脚本的一部分,它使用之前生成的库作为 .aar 文件。
3 个版本,它们都不起作用(它们都不会从库中自动下载依赖项)
(注意,我将此 .aar 文件添加到我的应用项目的 lib 文件夹中,并将 flatDir 指令添加到它的 gradle.build 中)。我不做File->New->NewModule->ImportExistingJAR/AAR
repositories {
flatDir {
dirs 'libs'
}
}
1.
compile(name:'mylibrary-release', ext:'aar')
2.
compile(name:'mylibrary-release', ext:'aar') {
transitive = true
}
3.
compile(':mylibrary-release@aar') {
transitive = true
}
【问题讨论】:
-
你在使用 proguard 吗?
-
我用完整的 build.gradle 文件编辑了我的问题。它说那里“缩小”-> false。
-
好吧,我不知道是什么原因造成的,但你可以给它一个机会给我写的这个 gradle。 github.com/emreaktrk/ContextualView/blob/master/library/…
-
另一种解决方案是根据需要编写您的库,并让 jitpacks.io 有机会为您提供 aar,以便自动化可以更好地工作:D Jitpacks.io 仅适用于 github :(
-
没有一些直接的解决方案吗?我是 Android 新手(我来自 iOS 世界)。
标签: java android android-studio android-library aar