在我的代码中,我需要有两种产品风味,其中一种风味(主要)具有最小api等级15和一种风味(mainv9)具有最小api等级9。在主要的味道,我需要包括一个不提供支持味道mainv9的库。
所以我在两个产品风味文件夹中复制了我的文件.java,就像这个
一样 SRC \主\的java \ COM \ UTIL \ Utility.java
SRC \主\谷歌-services.json
SRC \ mainv9 \ java中\ COM \ UTIL \ Utility.java
SRC \ mainv9 \谷歌-services.json
在Utility类的flavor main中,我有与外部库相关的代码,仅支持min api level 15
在Utility类的flavor mainv9中,我有没有外部库调用部分的代码。
我的build.gradle看起来像这样
apply plugin: 'com.android.application'
android {
sourceSets {
main {
manifest.srcFile 'src/main/AndroidManifest.xml'
java.srcDirs = ['src/main/java']
res.srcDirs = ['src/main/res']
assets.srcDirs = ['src/main/assets']
}
mainv9
{
java.srcDirs = [ 'src/mainv9/java']
}
}
productFlavors {
defaultFlavor {
applicationId 'com.app'
applicationIdSuffix ".default"
versionNameSuffix "-default"
minSdkVersion 15
signingConfig signingConfigs.APPkey
multiDexEnabled true
}
mainv9 {
applicationId 'com.app'
applicationIdSuffix ".mainv9"
versionNameSuffix "-mainv9"
minSdkVersion 9
signingConfig signingConfigs.APPkey
multiDexEnabled true
}
}
compileSdkVersion 25
buildToolsVersion '25.0.0'
useLibrary 'org.apache.http.legacy'
dexOptions {
javaMaxHeapSize "4g"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
debug {
applicationIdSuffix ".debug"
}
}
//noinspection GroovyMissingReturnStatement
packagingOptions {
exclude 'META-INF/maven/com.squareup.picasso/picasso/pom.xml'
exclude 'META-INF/maven/com.squareup.picasso/picasso/pom.properties'
exclude 'META-INF/DEPENDENCIES.txt'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
exclude 'META-INF/NOTICE'
exclude 'META-INF/LICENSE'
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/notice.txt'
exclude 'META-INF/license.txt'
exclude 'META-INF/dependencies.txt'
exclude 'META-INF/LGPL2.1'
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
defaultFlavorCompile 'io.lib.android:lib-sdk-base:3+'
}
apply plugin: 'com.google.gms.google-services'
但是当我尝试构建mainv9风格时,我得到的错误是在Utility.java文件中找到重复的类。
请帮助我。