Android Gradle productFlavors 優化

平時的多渠道打包配置方式:

android {
    ......
    productFlavors {
        flavorName1 {
            manifestPlaceholders.put("JPUSH_CHANNEL", "channel_1")
            buildConfigField("int", "fieldXxx", "1")
            ......
        }
        flavorName2 {
            manifestPlaceholders.put("JPUSH_CHANNEL", "channel_2")
            buildConfigField("int", "fieldXxx", "2")
            ......
        }
        .......
    }
}

這種方式沒啥問題,只是寫起來太煩了,一堆的重複代碼,我不爽,我要封裝一下:

android {
    ......
    productFlavors {
        ext.flavor = { _flavor, _jPushChannel, _fieldXxx ->
            _flavor.manifestPlaceholders.put("JPUSH_CHANNEL", _jPushChannel)
            _flavor.buildConfigField("int", "fieldXxx", _fieldXxx)
        }
        flavorName1 {
            flavor(flavorName1, "channel_1", "1")
        }
        flavorName2 {
            flavor(flavorName2, "channel_2", "2")
        }
    }
}

封裝完成,編譯運行也沒有問題。
但是每個渠道要寫 3 行代碼,寫兩遍渠道名,還是不爽,我要一行搞定:

android {
    ......
    productFlavors {
        ext.flavor = { _flavor, _jPushChannel, _fieldXxx ->
            _flavor.manifestPlaceholders.put("JPUSH_CHANNEL", _jPushChannel)
            _flavor.buildConfigField("int", "fieldXxx", _fieldXxx)
        }
        flavor(flavorName1, "channel_1", "1")
        flavor(flavorName2, "channel_2", "2")
    }
}

完美~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章