android中gradle中的构建变体中的不同资源和清单

时间:2015-06-24 11:31:56

标签: android build

我想使用相同的源代码,但是两种不同的构建变体使用不同的资源和清单。这是我的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'不存在。

  

请帮忙。

1 个答案:

答案 0 :(得分:0)

使用productFlavors时,您可以为它们创建特定的文件夹。在您的情况下,您可以创建文件夹" FV"和" AV"在你的" main"旁边文件夹中。

看起来应该是这样的:

src/
   main/
      AndroidManifest.xml
      res/
         ...
   FV/
      AndroidManifest.xml
      res/
         ...
   AV/
      AndroidManifest.xml
      res/
         ...

这样您就可以删除build.gradle中指定某些目录的代码,因为构建系统会自动检测它们。