android - 表示されない - 特定のフレーバーとbuildTypeのbuildconfigフィールドを定義する




プロダクトフレーバー (4)

Gradleビルドシステムでは、 buildTypesproductFlavorsは残念ながら2つの別々のエンティティです。

私が知っている限り、達成したいものを完成させるためには、別のビルドフレーバーを次のように作成する必要があります:

buildTypes {
        debug{}
        release {}
    }

    productFlavors {
        vanillaDebug {
             buildConfigField BOOLEAN, VARIABLE, FALSE
        }
        vanillaRelease {
             buildConfigField BOOLEAN, VARIABLE, TRUE
        }
        chocolate {
             buildConfigField BOOLEAN, VARIABLE, FALSE
        }
    }

私は2つの味があり、バニラとチョコレートを言うことができます。 私はまた、デバッグとリリースのビルドの種類があり、私は他の3つの組み合わせがfalseである必要がありますが、フィールドをtrueにするためにバニラリリースが必要です。

def BOOLEAN = "boolean"
def VARIABLE = "VARIABLE"
def TRUE = "true"
def FALSE = "false"

    VANILLA {

        debug {

            buildConfigField BOOLEAN, VARIABLE, FALSE

        }

        release {

            buildConfigField BOOLEAN, VARIABLE, TRUE

        }


    }

    CHOCOLATE {
        buildConfigField BOOLEAN, VARIABLE, FALSE
    }

私はエラーが発生しているので、デバッグとリリースのトリックdoesntの仕事を推測します。 これは可能ですか?


ここで私はSimasの答えの下で説明した不足していないソリューションです

buildTypes {
    debug {}
    release {}
}

productFlavors {
    vanilla {
        ext {
            variable = [debug: "vanilla-debug value", release: "vanilla-release value"]
        }
    }
    chocolate {
        ext {
            variable = [debug: "chocolate-debug value", release: "chocolate-release value"]
        }
    }
}

applicationVariants.all { variant ->
    def flavor = variant.productFlavors[0]
    variant.buildConfigField "boolean", "VARIABLE", "\"${flavor.ext.variable[variant.buildType.name]}\""
}

バリアントをループして名前を確認してください:

productFlavors {
    vanilla {}
    chocolate {}
}

applicationVariants.all { variant ->
    println("Iterating variant: " + variant.getName())
    if (variant.getName() == "chocolateDebug") {
        variant.buildConfigField "boolean", "VARIABLE", "true"
    } else {
        variant.buildConfigField "boolean", "VARIABLE", "false"
    }
}

具体的には、defaultConfigで再生することもできます:

defaultConfig {
    buildConfigField BOOLEAN, VARIABLE, TRUE
}

buildTypes {
    debug {
        buildConfigField BOOLEAN, VARIABLE, FALSE
    }
    release {
    }
}

productFlavors {
    VANILLA {
    }
    CHOCOLATE {
        buildConfigField BOOLEAN, VARIABLE, FALSE
    }
}

デフォルト値はTRUEですが、すべてのデバッグビルドとすべてのチョコレートビルドにFALSEを設定します。 唯一残っているTRUEはVANILLAリリースです。







build-tools