好了,继续跟着上次的文章往下写。人生真是寂寞如雪啊~~~
上次介绍的是Project的gradle, 相信大家对一些变量的定义和使用有了一定的认识了。今天我们介绍的是Module的gradle。
android {
//配置keystore签名
signingConfigs {
}
//系统自带的
defaultConfig {
}
//变种
productFlavors{
}
//打包类型
buildTypes {
}
}
我暂时就用到这几种,那我们先一个个来介绍。
1.signingConfigs ,这个方法是用来配置你run的情况下Apk打的是哪个签名。可以这样配置。
signingConfigs {
GWT {
//引入签名的路径
storeFile file("./xxx.jks")
//签名密码
storePassword "password"
//别名
keyAlias "keyAlias"
//key的密码
keyPassword "password"
}
GWTTest {
storeFile file("./xxx_test.jks")
storePassword "password"
keyAlias "keyAlias"
keyPassword "password"
}
}
这里我用生成的两个jks来配置不同环境下打入不同的签名包,这里可能有人会问那到底怎么用呢,先别急,慢慢来,这个主要是为了和后面的一起配合的,现在是说明下用法,让大家了解下这个地方该怎么写。
敲黑板。。。注意哈,这里我的jks是放在了Module的gradle的同级文件里,也就是他们俩是在一起的,所以我的路径是“./xxx.jks”,大家最好也这样,因为团队合作的话路径就一致了,没那么多幺蛾子。
GWT配置的是我项目中正式的jks,steelCityDevelop配置的是我开发的jks,一般来说开发都会有两套jks,当然如果还有更多的话那么在下面继续定义就是了。
2.productFlavors变种(我自己这样叫的,别打我),这个方法里面会用来配置不同环境的差异参数,比如说正式和开发的接口路径,包名,打哪个签名,App包名,各种第三方的key。
productFlavors {
GWTTest {
//修改包名,在包名后面加了个.test
applicationIdSuffix ".test"
//执行上面的签名配置,意思就是我这个打开发签名包
signingConfig signingConfigs.GWTTest
//往BuildConfig.java里面添加一个叫SERVICE_URL的字段,这里的用途是动态改变接口路径
buildConfigField "String", "SERVICE_URL", GWTConfig.serviceUrlDevelop
//往BuildConfig.java里面添加一个叫BAIDU_PUSH的字段,这里的用途是动态改变百度推送的key
buildConfigField "String", "BAIDU_PUSH", GWTConfig.baiDuPushKeyDevelop
//这个下面单独讲
addManifestPlaceholders([BAIDU_KEY_VALUE: GWTConfig.baiDuMapKeyDevelop as String,
APP_NAME:GWTConfig.labelDevelop as String])
}
GWT {
signingConfig signingConfigs.GWT
buildConfigField "String", "SERVICE_URL", GWTConfig.serviceUrl
buildConfigField "String", "BAIDU_PUSH", GWTConfig.baiDuPushKey
addManifestPlaceholders([BAIDU_KEY_VALUE: GWTConfig.baiDuMapKey as String,
APP_NAME: GWTConfig.label as String])
}
}
addManifestPlaceholders,这个属性看属性名可以了解的差不多,意思就是往AndroidManifest.xml填加一个它可以用的属性
语法是:
addManifestPlaceholders([
BAIDU_KEY_VALUE: GWTConfig.baiDuMapKey as String,
APP_NAME: GWTConfig.label as String
])
这里的BAIDU_KEY_VALUE是我配置在AndroidManifest里面的百度地图key,以下是AndroidManifest的代码:
<meta-data
android:name="com.baidu.lbsapi.API_KEY"
android:value="${BAIDU_KEY_VALUE}" />
这里用${BAIDU_KEY_VALUE}就可以引用了。
这里的APP_NAME是我配置在AndroidManifest里面的程序名称,免得自己分不清楚,到时候操作了正式环境的数据给我九条命也不够,以下是AndroidManifest的代码:
<application
android:name="com.xxx.xxx.App"
android:allowBackup="true"
android:icon="@mipmap/app_icon"
android:label="${APP_NAME}"
android:supportsRtl="true"
tools:replace="android:label"
android:theme="@style/MyAppTheme">
</application>
老样子,用${APP_NAME}就可以引用了。
这里我先停止下,有些人这时候可能在吐槽我怎么知道我打包的时候它到底会走哪个,你讲了半天废话,过来看我不打死你。
大哥冷静啊。至少让我说完好不好!!!用Androidstudio的朋友们听好了(额,其他的我就管不到了)。
打开你的AS,左上角状态栏顺数第三个有个叫View的,点开它,选择Tool Windows,选择Build Variants,我这里是这样的:
坑~~~~~~~
1.整个gradle请按照顺序来
apply plugin: 'com.android.application'
//apply plugin: 'android-apt'
def androidConfig = rootProject.ext.android
def GWTConfig = rootProject.ext.config
android {
// 编译SDK的版本
compileSdkVersion androidConfig.compileSdkVersion
// build tools的版本
buildToolsVersion androidConfig.buildToolsVersion
signingConfigs {
}
defaultConfig {
}
productFlavors {
}
buildTypes {
}
}
dependencies {
}
因为这个语法是按照顺序来的,所以别写错位置了,否则容易报错,你们也可以按照我上面找Build Variants的方式把Gradle Console打开,看看具体执行。
现在知道了吧,要执行哪个,选择,直接run就好啦。
今天先讲到这里,大家去试试吧。