【发布时间】:2015-11-05 01:19:57
【问题描述】:
我有一个名为 Common 的库项目,我将其用于由我的其他项目 Consumer 和 Management 共享的功能。 Consumer 本身也是一个库项目,供其他应用程序使用。
Common 中的 build.gradle 文件包含其他项目使用的所有外部依赖项,如下所示:
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.google.code.gson:gson:2.2.2'
compile 'com.android.support:support-v4:22.1.0'
compile 'com.squareup.picasso:picasso:2.5.2'
}
这会下载以下库:
当我将 Common 添加到 Consumer、Management 或两者中时,此列表保持不变。当我像这样将消费者添加到 MyApp 时:
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile project(':consumer')
}
发生这种情况:
支持库消失了,对我的项目造成了彻底的破坏。这在更新到 Android Studio 1.3.1 之前没有发生,所以我真的想知道问题可能是什么。
这些是完整的 gradle.build 文件供参考:
常见
apply plugin: 'com.android.library'
android {
compileSdkVersion 22
buildToolsVersion "22.0.1"
defaultConfig {
minSdkVersion 11
targetSdkVersion 22
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.google.code.gson:gson:2.2.2'
compile 'com.android.support:support-v4:22.1.0'
compile 'com.squareup.picasso:picasso:2.5.2'
}
管理
apply plugin: 'com.android.application'
android {
compileSdkVersion 22
buildToolsVersion "22.0.1"
defaultConfig {
applicationId "eu.test.mgmt"
minSdkVersion 11
targetSdkVersion 22
multiDexEnabled = true
}
packagingOptions {
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/NOTICE'
exclude 'META-INF/LICENSE'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
exclude 'META-INF/ASL2.0'
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
}
dependencies {
compile project(':common')
}
消费者
apply plugin: 'com.android.library'
android {
compileSdkVersion 22
buildToolsVersion "22.0.1"
lintOptions {
checkReleaseBuilds false
abortOnError false
}
defaultConfig {
minSdkVersion 15
targetSdkVersion 22
versionCode 18
versionName "1.3"
multiDexEnabled = true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
sourceSets { main { res.srcDirs = ['src/main/res', 'src/main/xml', 'src/main/res/xml'] } }
}
repositories {
mavenCentral()
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile project(':common')
}
我的应用:
apply plugin: 'com.android.application'
android {
compileSdkVersion 22
buildToolsVersion "22.0.1"
defaultConfig {
applicationId "eu.test.myapp"
minSdkVersion 15
targetSdkVersion 22
versionCode 19
versionName "1.4"
multiDexEnabled = true
}
packagingOptions {
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/NOTICE'
exclude 'META-INF/LICENSE'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
exclude 'META-INF/ASL2.0'
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile project(':consumer')
}
【问题讨论】:
-
我能看到的唯一奇怪的事情是您在消费者
build.gradle中指定了存储库。也许尝试删除该块,因为它似乎没有必要,尽管我也不确定这会导致您的问题。 -
两个问题!!您是否尝试添加 :common 作为直接依赖项?那么appCompat库也没有显示?并添加 :management 作为依赖项也会导致同样的问题?
-
是否仅在 IDE 中丢失?尝试
./gradlew your_app:dependencies并提供输出
标签: android android-studio gradle