您的位置:首页 > 其它

RE:从零开始学gradle(三)

2016-10-26 09:26 363 查看
上一章传送门:RE:从零开始学gradle(二)

关于构建变量

在开发应用程序时,通常拥有几个不同的版本。有用于本地测试的测试版本,用于发行的生产版本。还有可能有免费版本以及付费版本。不同的版本之间的API的URL通常是不同的,这样会导致管理起来特别复杂。为了解决这一问题,Gradle提出了一些可扩展的概念。这次,我们就来看看Gradle是如何做到多版本开发的。

BuildTypes(构建类型)

在Gradle的Android插件中,BuildTypes用于定义应用程序或者库。每个BuildTypes都可以指定调试符号是什么,应用程序ID是什么,未使用的资源是否需要删除等等。下面是一个标准的BuildTypes:

android {
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}一般当新建好项目的时候AS就会在模块的build.gradle文件中配置以上的BuildTypes。通过设置minifyEnabled 为false可以禁止删除未使用的资源。通过设置proguardFiles来设置混淆文件。
当然,我们可以自己创建自定义的BuildTypes,下例创建了一个名为dlsdubug的自定义BuildTypes:

buildTypes {
dlsdebug {//会在BuildConfig.class 下生成常量
applicationIdSuffix ".dlsdebug"
versionNameSuffix "-dlsdebug"
buildConfigField("String", "API_URL", "\"http://test.example.com/api/\"")//定义常量
buildConfigField("boolean", "LOG_HTTP_CALLS", "true")
resValue("string", "APP_NAME", "DLS_VIEW")//string的首字母需要小写
}
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}通过设置applicationIdSuffix ".dlsdebug"给应用程序ID定义了一个新的后缀,这样的话,应用程序的ID应该是这样的:
Debug:com.dlsapp

Release:com.dlsapp

Dlsdebug:com.dlsapp.dlsdebug

这就意味着,可以同时在一个终端上安装自定义版本和生产版本,而且不会导致任何冲突。

创建新的BuildTypes并不总是从头开始,也可以继承复制另外一个BuildTypes的属性来构建:例如以下:

buildTypes {
dlsdebug.initWith(buildTypes.debug)
dlsdebug {//会在BuildConfig.class 下生成常量
applicationIdSuffix ".dlsdebug"
versionNameSuffix "-dlsdebug"
buildConfigField("String", "API_URL", "\"http://test.example.com/api/\"")//定义常量
buildConfigField("boolean", "LOG_HTTP_CALLS", "true")
resValue("string", "APP_NAME", "DLS_VIEW")//string的首字母需要小写
}
}initWith()方法创建了一个新的BuildTypes并复制现有的BuildTypes到新的BuildTypes中。
针对型依赖

每个BuildTypes都可以有自己的依赖关系。Gradle自动创建每个BuildTypes的新依赖关系配置。如果要添加某个依赖仅仅用于debug版本的话,可以这样来实现:

dependencies {
debugCompile 'com.android.support:appcompat-v7:23.1.1'
}Product flavors(产品风格)
这点很好解释。就拿最简单的一款游戏来说,这款游戏会有多个渠道多个代理商,这些不同代理商都有着自己的账号系统以及支付系统,甚至连开启的LOGO和插件都不同。针对这些不同代理商,产品风格大大的简化了不同渠道下的程序的开发难度。

下面给出一个简单的Product flavors的例子:

productFlavors {
baidu {
applicationId 'com.dlsview.baidu'
versionCode 1
}
tecent {
applicationId 'com.dlsview.tencent'
minSdkVersion 14
versionCode 2
}
}产品风格主要是用于定义区别于基本风格的属性,其他未定义的属性是继承基本属性的。
Siging Configurations(签名配置)

先看一个实例:

签名设置:

项目右键,选择Open Module Settings 或者快捷键F4



进入Siging标签页



再具体设置一下你的签名信息就可以了。设置完这些信息,点击OK,Gradle就会在该module下的build.gradle的android块内生成以下代码:

signingConfigs {//配置签名
dlsdebug.initWith(signingConfigs.debug)
dls {
keyPassword '139dls'
storeFile file('D:/MyView/dls.jks')//签名路径
storePassword '139dls'
keyAlias 'dls'
}
}配置完以上签名信息后,在BuildTypes中调用
dlsdebug {
signingConfig signingConfigs.dls
}
就可以自动给包签名。再执行build命令,就会生成不同的APK包了。



以上。未完待续~~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  gradle 签名 风格