我在用gradle构建的android项目中有两种产品口味。
两种口味中的一种都声明了额外的依赖关系,但实际上在两种口味中都使用了这种依赖关系。两种 flavor 都可以构建,因为其中一种 flavor 依赖于仅针对第一种 flavor 才声明的库,而事实并非如此。
由于其中一个版本是专业版,最终在apk中不应该包含admob SDK,我现在担心出于某种原因这两个版本都添加了admob SDK。
我有以下build.gradle文件:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.5.+'
}
}
apply plugin: 'android'
repositories {
mavenCentral()
}
android {
compileSdkVersion 18
buildToolsVersion "18.0.1"
defaultConfig {
minSdkVersion 10
targetSdkVersion 18
}
productFlavors {
Pro {
packageName "de.janusz.journeyman.zinsrechner.pro"
}
Free {
dependencies {
compile files('src/Free/libs/admob.jar')
}
}
}
}
dependencies {
compile 'com.android.support:support-v4:18.0.+'
compile 'com.actionbarsherlock:actionbarsherlock:4.4.0@aar'
compile fileTree(dir: 'libs', include: '*.jar')
}
最佳答案
仅对一种产品类型添加依赖项的正确方法是:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.5.+'
}
}
apply plugin: 'android'
repositories {
mavenCentral()
}
android {
compileSdkVersion 18
buildToolsVersion "18.0.1"
defaultConfig {
minSdkVersion 10
targetSdkVersion 18
}
productFlavors {
pro {
packageName "de.janusz.journeyman.zinsrechner.pro"
}
free { }
}
}
dependencies {
compile 'com.android.support:support-v4:18.0.+'
compile 'com.actionbarsherlock:actionbarsherlock:4.4.0@aar'
compile fileTree(dir: 'libs', include: '*.jar')
freeCompile files('src/Free/libs/admob.jar')
}
关于android - 为什么我所有的Gradle产品口味都在构建?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18197601/