gradle 笔记 (多样化build app)

关于gradle 多样化build app;

productFlavors {
    demo1 {
        applicationId "com.mxx"
        manifestPlaceholders = ["com.placeholder": "com.mxx", "placeholder.debug": "true"]
        //versionCode = 1;
        minSdkVersion 17
        proguardFile 'C:/androidStudioWorkspace/HSBCHybridApp_3Q20140518/HSBCHybridApp_3Q2014/proguard-rules.txt'
        signingConfig signingConfigs.config
        targetSdkVersion 21
    }
    demo2 {
        applicationId "com.mxx"       
  	manifestPlaceholders = ["com.placeholder": "com.mxx", "placeholder.debug": "true"]
}}
在productFalvors 里面可以设置各种各样的build 以上是2个例子
其中manifestPlaceholders 是用来替换manifest的站位符,这样方便 只使用一个manifest.xml 来build出不同的app
同样也可以替换string.xml里面的占位符:
  gradle 没有提供相应的方法 但是可以使用DSL语言来实现:
String app_name = "\\u0024\\u007com.mike.appname\\u007D"

 def replaceInString = { variant, fromString, toString ->
        File valuesFile = file("${buildDir}/intermediates/res/merged/${variant.dirName}/values/values.xml")
        println "Replacing revision number in " + valuesFile
        String content = valuesFile.getText('UTF-8')
        content = content.replaceAll(fromString, toString)
        valuesFile.write(content, 'UTF-8')
    }
    android.applicationVariants.all { variant ->
        variant.mergeResources.doLast {
            String variantString = variant.dirName
            println "dir name " + variantString
            if (variantString.contains("demo1")) {
                replaceInString(variant, app_name, "mxxtc110)
            }
        }
    }
}
这样就替换了 string.xml里面的站位符 ${com.mike.appname} 变成mxxtc110
提醒一下gradle build 会将string.xml 生成到一个value.xml下面 我们并没有改变string.xml 而是改变了gradle生成的中间文件.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值