[张武]
Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化建构工具。 —— 百度百科
Android Studio Gradle是android studio中用来进行自动化构建配置的,在Gradle中可以配置apk生成的版本、签名等。下面将就当前的学习,做一个说明。
Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化建构工具。 —— 百度百科
Android Studio Gradle是android studio中用来进行自动化构建配置的,在Gradle中可以配置apk生成的版本、签名等。下面将就当前的学习,做一个说明,建议在看这篇笔记之前,简单了解一下Gradle的语法。
apply plugin: 'com.android.application'
android {
...
}
dependencies {
...
}
compile fileTree(dir: 'libs', include: ['*.jar'])
compile project(path: ':PullToRefresh')
//xutils3
compile 'org.xutils:xutils:3.3.32'
//gson
compile 'com.google.code.gson:gson:2.4'
//glide
compile 'com.github.bumptech.glide:glide:3.6.1'
//eventbus
compile 'de.greenrobot:eventbus:2.4.0'
//multi dex
compile 'com.android.support:multidex:1.0.1'
compileSdkVersion 21
buildToolsVersion "21.0.3"
defaultConfig {
applicationId "com.jeff" //appId唯一标识当前app
minSdkVersion 9 //兼容的最低sdk版本
targetSdkVersion 24 //目标sdk
versionCode 10 //版本号
versionName "1.1.0" //版本名
multiDexEnabled true //是否分包
}
//配置keystore签名
signingConfigs {
release { //release版签名
storeFile file("zhangwu.jeff")
storePassword "123456"
keyAlias "zhangwu"
keyPassword "123456"
v2SigningEnabled false
}
debug{ //debug版签名
storeFile file("debug.jeff")
storePassword "123456"
keyAlias "zhangwu"
keyPassword "123456"
v2SigningEnabled false
}
}
buildTypes {
debug{
...//测试环境
}
dev{
...//开发环境
}
release{
...//线上环境
}
这里设置不用的buildtype会在android studio中生成对应的编译选项,双击下图中的编译类型会生成对应的包
具体配置buildType,举例如下
dev{
//将资源文件string中的app_name 设置为 shareApp_dev
resValue("string","app_name","shareApp_dev")
//在DefaultConfig.java中新建String类型的SEVER_ADDRESS,值为localhost:8080/share
buildConfigField"boolean","SEVER_ADDRESS","localhost:8080/share"
//设置是否生成debug版的APK
debuggable true
//配置当前buildType的签名信息
signingConfig signingConfigs.release
//
minifyEnabled true
//配置混淆文件
proguardFiles 'proguard.config'
//是否zip对齐
zipAlignEnabled true
//移除未使用的资源
shrinkResources true
}
//修改生成的文件
applicationVariants.all{variant->
variant.outputs.each{output->
def formattedDate=new Date().format('yyyyMMdd')
def fileName
if(variant.buildType.name=="release"){
//输出apk名称改为ShareApp_10_20160305.apk
fileName="ShareApp_${defaultConfig.versionCode}_${formattedDate}.apk"
}else if(variant.buildType.name=="debug"){
//输出apk名称改为ShareApp_10_20160305_debug.apk
fileName="ShareApp_${defaultConfig.versionCode}_${formattedDate}_debug.apk"
}else if(variant.buildType.name=="dev"){
//输出apk名称改为ShareApp_10_20160305_dev.apk
fileName="ShareApp_${defaultConfig.versionCode}_${formattedDate}_devg.apk"
}
//输出apk文件
output.outputFile = new File(output.outputFile.parent,fileName)
//将apk复制到指定文件夹
copy{
from('build/outputs/apk')
into('C:/apkOutput')
include(fileName)
}
}
dexOptions {
javaMaxHeapSize "4g" //java虚拟机堆内存最大值设为4g,避免oom
preDexLibraries = false //设置对第三方lib不做preDex处理
additionalParameters = //每个dex包方法数限制在4000以内
['--multi-dex',
'--set-max-idx-number=40000']
}
gradle相关还有很多需要学习的,先记录到此,以后学习再补充。