Android Gradle配置构建
使用gradle构建不同的应用名和图标
详情可以参考学习链接 文章链接
对于manifest中字段,可以在gradle中通过manifestPlaceholders来进行配置,具体的写法manifestPlaceholders=[key:value]
例如我想在debug版本和release版本通过appname和icon进行区分的话可以在buildType中进行如下的配置
debug{
manifestPlaceholders = [app_icon:"@drawable/ic_launcher_debug" ,
label:"@string/app_name_debug"]
}
然后对应的manifest文件
<application
android:icon="${app_icon}" //替换icon
android:label="${label}" //替换名字
tools:replace="android:icon,android:label"> //在进行包合并时,声明替换icon和name
在release中也可以进行相应的配置,但是如果是多渠道打包的话,则在productFlavors来构建不同的变体,如下示例
productFlavors{
huawei{
manifestPlaceholders=[app_icon:"@drawable/ic_huawei",
label:"@string/app_name_huawei"]
}
oppo{
manifestPlaceholders=[app_icon:"@drawable/ic_oppo",
label:"@string/app_name_oppo"]
}
xiaomi{
manifestPlaceholders=[app_icon:"@drawable/ic_xiaomi",
label:"@string/app_name_xiaomi"]
}
}
如果配置还需要配置不同的友盟key或者secret的话,同样的方式,只需要在manifestPlaceholders中增加字段就行了
自定义gradle文件
如果配置信息太多的话,可以自定义一个gradle文件中,比如在工程目录下新建一个config.gradle的文件,在里面需要定义一些字段,可以这样写
ext{
youmeng=[
app_key:123456,
app_secret:123456
]
baidu=[
app_key:123456,
app_secret:123456,
app_name:"百度相关"
]
}
在module对应的gradle下面,可以通过rootProject来拿到自定义文件中的字段,写法如下
rootProject.ext.youmeng.app_key
rootProject.ext.baidu.app_name
当然有些字段是需要Java代码中需要的,那么就需要通过buildConfig对象来获取,因为每一个module在构建时,都会有一个buildConfig对象的生成,我们可以通过自定义一些字段,来方便自己获取,写法如下buildConfigField(type,key,value)
buildConfigField("String","app_msg","\"hello world\"") //如果是字符串的话,一定要添加转义符,不然双引号会被过滤掉进行报错
//在Java代码中,只需要通过buildConfig来直接条用就可以了(一下为Java代码)
System.out.println(BuildConfig.app_msg) //输出 hello world
当然最重要的是在使用自己自定义的gradle文件时,需要在项目的build.gradle文件中的头部添加 apply from:“config.gradle”,不然会找不到config文件而报错
配置签名等属性
在gradle中配置签名各种信息后,在build的时候,就不需要在进行输入密码之类的具体配置模板
signingConfigs{
debug{
}
release{
keyAlias:"xxxx" //对应签名时的keyAlias
keyPassword:"xxx" //对应签名是的keyPassword
storeFile file("xxx.jks") //对应签名文件
storePassword:"xxxx" //对应签名是的storePassword
v1SigningEnabled true //使用v1签名方式
v2SigningEnabled true //使用v2签名方式
}
}
在buildType配置中使用签名配置
buildType{
debug{
signingConfig signingConfigs.debug
}
release{
signingConfig signingConfigs.release
}
}
关于Android构建的更多信息,请参见官方资料官方链接