在 build.grade(Module:app) 中添加 productFlavors 给出错误

adding productFlavors in build.grade(Module:app) giving error

我正在 build.gradle(Module:app) 添加以下内容:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.3"

    defaultConfig {
        applicationId "com.sis.newpro"
        minSdkVersion 22
        targetSdkVersion 25
        testInstrumentationRunner 
"android.support.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 
'proguard-rules.pro'
        }

    }
}

productFlavors {
    prod {
        buildConfigField 'String', 'URL', '"http://api.abcd.com"'
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:25.3.1'
    compile 'com.android.support.constraint:constraint-layout:1.0.2'

}

给出错误:(22, 0) 无法在 org.gradle.api.Project 类型的项目“:app”上找到参数 [build_bqh9qnip9k7nqy2kbpova0vtq$_run_closure2@5b30b3a7] 的方法 productFlavors() .

我是否缺少要添加到 build.gradle(Module:app) 中的任何内容,或者我是否需要向 build.gradle(Project:NewProject)

添加任何内容

按照以下步骤创建构建风格:

productFlavors {

TestFlavourType {
                applicationId "com.test.flavour"
                minSdkVersion 17
                targetSdkVersion 25
                versionCode 3
                versionName "1.02"
                multiDexEnabled true
                }

定义源集以从不同的文件夹中选取:

sourceSets {
        main { //Main
            manifest.srcFile 'src/main/AndroidManifest.xml' - picks from Main
            java.srcDirs = ['src/main/java']
            resources.srcDirs = ['src/main/java']
            aidl.srcDirs = ['src/main/java']
            renderscript.srcDirs = ['src/main/java']
            res.srcDirs = ['src/main/res']
            assets.srcDirs = ['src/main/assets']
        }               

如果你想保持不同layout/styles/String你需要定义如下:

TestFlavourType {
            res.srcDirs = ['src/TestFlavourType/res-TestFlavourType', 'src/CommonLayoutDir/res']
            // For resources it will look for the files in this path [src/TestFlavourType/res-TestFlavourType] else it will look in to this [src/CommonLayoutDir/res]
            assets.srcDirs = ['src/TestFlavourType/assets', 'src/main/assets']
        }       
}       

}//productFlavors end

在 Src 目录下创建一个文件夹来维护不同的布局文件flavors.Please如果有帮助请告诉我。

将您的 productFlavors 标签移到 android 大括号内,它需要是 buildTypes 的同级标签。


你的build.gradle最终会变成这样:

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.3"

    defaultConfig {
        applicationId "com.sis.newpro"
        minSdkVersion 22
        targetSdkVersion 25
        testInstrumentationRunner
        "android.support.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'),
                    'proguard-rules.pro'
        }

    }
    productFlavors {
        prod {
            buildConfigField 'String', 'URL', '"http://api.abcd.com"'
        }
    }
}