我想使用相同的源代码,但是两种不同的构建变体使用不同的资源和清单。这是我的build.gradle
apply plugin: 'com.android.application'
android {
compileSdkVersion 21
buildToolsVersion "21.1.2"
defaultConfig {
applicationId 'com.test.project'
minSdkVersion 17
targetSdkVersion 21
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
productFlavors {
FV {
applicationId "com.test.project"
versionName "1.0"
}
AV {
applicationId "com.test.project"
versionName "1.0"
}
}
sourceSets.AV {
manifest.srcFile 'resources/av_res/AndroidManifest.xml'
res.srcDirs = ['res', 'resources/av_res/res']
}
sourceSets.FV {
manifest.srcFile 'resources/fv_res/AndroidManifest.xml'
res.srcDirs = ['res', 'resources/fv_res/res']
}
}
android {
packagingOptions {
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
}
}
dependencies {
compile files('libs/commons-codec-1.9.jar')
compile files('libs/sdk.jar')
compile files('libs/libGoogleAnalytics.jar')
}
在这我得到一个错误:
错误:找到任务':app:checkDebugManifest'的配置问题。
为属性'manifest'指定的文件'D:\ nitin \ projects \ FV \ SFV \ app \ src \ main \ AndroidManifest.xml'不存在。
请帮忙。
答案 0 :(得分:0)
使用productFlavors时,您可以为它们创建特定的文件夹。在您的情况下,您可以创建文件夹" FV"和" AV"在你的" main"旁边文件夹中。
看起来应该是这样的:
src/
main/
AndroidManifest.xml
res/
...
FV/
AndroidManifest.xml
res/
...
AV/
AndroidManifest.xml
res/
...
这样您就可以删除build.gradle中指定某些目录的代码,因为构建系统会自动检测它们。