首页 > 学院 > 开发设计 > 正文

asgradle配置参数

2019-11-08 00:28:15
字体:
来源:转载
供稿:网友

转自: http://blog.csdn.net/xiaoyaoyou1212/article/details/50277555一、Gradle介绍 Gradle是一个高级构建系统和构建工具,允许通过插件自定义构建逻辑。Gradle的实质是配置脚本,执行一种类型的配置脚本时就会创建一个关联的对象,它由三种脚本类型构成,分别是构建脚本(Build Script)、初始化脚本(Init Script)及设置脚本(Settings Script),其对应的三种代理对象分别是PRoject对象、Gradle对象及Settings对象。

二、Gradle基础配置

Android Studio对应工程目录 Android Studio工程目录settings.gradle文件介绍 该文件是全局的项目配置文件,里面主要声明一些需要加入gradle的module。build.gradle文件介绍 该文件如果是面向工程的,一般用来存储构建脚本的版本来源及工程的仓库来源,如下图所示,指定的构建工具版本是gradle1.2.3,该工具及全局工程的仓库来源都是jcenter;buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:1.2.3' }}allprojects { repositories { jcenter() }}12345678910111213141234567891011121314

而如果该文件面向的是对应的module,则一般指定的module类型,Android相关及依赖库,如下图所示为常用配置。

//module类型,常用的如:'com.android.application'、'com.android.library'、'java'、'maven'等。apply plugin: 'com.android.application'//Android常用配置android {    //编译版本    compileSdkVersion 22    //构建工具版本    buildToolsVersion "22.0.1"    //默认配置    defaultConfig {        //应用包名        applicationId 'com.xyy.example'        //最小版本        minSdkVersion 15        //目标版本        targetSdkVersion 22        //应用版本号        versionCode 1        //应用版本名称        versionName "1.0"        //是否允许dex文件超过65535大小,默认打开        multiDexEnabled true    }    //指定编译版本    compileOptions{        sourceCompatibility JavaVersion.VERSION_1_7        targetCompatibility JavaVersion.VERSION_1_7    }    //lint检查配置,默认关闭    lintOptions {        abortOnError false    }    //渠道指定    productFlavors {    }    //签名配置    signingConfigs {        //调试版本        debug {            storeFile file('×.keystore')            storePassWord ×××            keyAlias ××××            keyPassword ×××        }        //发布版本        release {            //签名文件目录指定,相对于该module            storeFile file('×.keystore')            //签名密码            storePassword ×××            //Alias名称            keyAlias ××××            //Alias密码            keyPassword ×××            }    }    //构建类型配置    buildTypes {        debug {            buildConfigField("boolean", "LOG_DEBUG", "true")            versionNameSuffix "debug"            minifyEnabled false            zipAlignEnabled false            shrinkResources false            signingConfig signingConfigs.debug        }        release {            //添加buildConfig配置字段,可以设置日志打印开关字段,方便发布时自动关闭打印日志            buildConfigField("boolean", "LOG_DEBUG", "false")            //在生成的release版本APK后缀中添加"release"字段            versionNameSuffix "release"            //是否混淆(特别注意:如果混淆文件未配置使用false)            minifyEnabled false            //是否支持Zip Align            zipAlignEnabled true            //是否清理无用资源            shrinkResources true            //混淆文件指定            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'            //签名指定            signingConfig signingConfigs.release        }    }    //相关源路径的设置    sourceSets{        main{            manifest.srcFile 'AndroidManifest.xml'            java.srcDirs = ['src']            resources.srcDirs = ['src']            aidl.srcDirs = ['src']            renderscript.srcDirs = ['src']            res.srcDirs = ['res']            assets.srcDirs = ['assets']            jniLibs.srcDirs = ['libs']        }    }}//依赖配置dependencies {    //本地依赖文件树    compile fileTree(dir: 'libs', include: ['*.jar'])    //远程依赖    compile '...'    //远程编译时依赖库但不包含该库,防止重复包含引起包冲突    provided '...'    //本地依赖文件    compile files('...')    //本地编译时依赖文件,不包含该文件    provided files('...')    //本地依赖工程    compile project('...')}123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115

4 gradle.properties文件介绍 该文件一般用来存储工程范围内的全局属性,而如果是与开发者个人相关且不便纳入版本控制的属性,则放到 $HOME/.gradle 下的 gradle.properties 文件,比如签署app的密钥等。

三、多渠道打包配置

1.在AndroidManifest.xml中设置PlaceHolder(占位符) 在application下添加

<meta-data    android:name="渠道名称"    //渠道名称,可以使用android:value="${变量名}",假如变量名为XYY_FLAVORS,下面使用该变量进行说明    android:value="渠道ID"    />1234512345

2.在对应module中的build.gradle文件中设置productFlavors(渠道信息) 首先在defaultConfig下设置默认渠道

manifestPlaceholders = [XYY_FLAVORS: "渠道ID"]11

然后在android下指定需要打包的渠道信息

productFlavors {    渠道ID1 {}    渠道ID2 {}    渠道ID3 {}    渠道ID4 {}    ...}productFlavors.all {    flavor -> flavor.manifestPlaceholders = [XYY_FLAVORS: name]}1234567891012345678910

最后在buidTypes的release下指定发布时的渠道包名称

applicationVariants.all {    variant -> variant.outputs.each {        output -> def outputFile = output.outputFile           if(outputFile != null && outputFile.name.endsWith(".apk")){                def fileName = "xyy_v${defaultConfig.versionName}_${variant.productFlavors[0].name}.apk"                output.outputFile = new File(outputFile.parent, fileName)            }    }}123456789123456789

3.使用assemble命令进行打包 使用./gradlew assemble+productFlavor+buildType进行打包,如: ./gradlew assembleBaiduRelease指定Baidu的release版本; ./gradlew assembleBaidu指定Baidu的release和debug版本; ./gradlew assembleRelease指定所有渠道的release版本; ./gradlew assemble指定所有渠道的release和debug版本。

四、Maven仓库管理配置 1、本地配置,针对所有该用户下所有工程 在$HOME/.gradle下添加init.gradle文件,这是Gradle初始化脚本,也是面向用户的全局配置,配置如下:

allprojects{repositories {    def REPOSITORY_URL = '本地仓库路径'    //主要逻辑是判定如果是maven2及jcenter仓库,都先执行本地仓库    all { ArtifactRepository repo ->        if(repo instanceof MavenArtifactRepository){            def url = repo.url.toString()            if (url.startsWith('https://repo1.maven.org/maven2') || url.startsWith('https://jcenter.bintray.com/')) {                project.logger.lifecycle "Repository ${repo.url} replaced by $REPOSITORY_URL."                remove repo                }            }        }        maven {            url REPOSITORY_URL        }    }}123456789101112131415161718123456789101112131415161718

2、在对应工程的build.gradle配置

allprojects {    repositories {        maven{            credentials{                username    '用户名'                password    '密码'            }            url '本地仓库路径'        }        //jcenter()        //mavenLocal()    }}1234567891011121312345678910111213

3、上传代码到本地仓库配置 在需要上传的module下的build.gradle中添加如下配置

apply   plugin:'maven'uploadArchives{    repositories{        mavenDeployer{            //指定groupId,在仓库下展示为路径com/xyy/example            pom.groupId = "com.xyy.example"            //指定版本号            pom.version = "1.0.0"            repository(url: "本地仓库路径"){                authentication(userName: 用户名, password: 密码)             }        }    }}12345678910111213141234567891011121314

五、自动化测试配置在需要进行测试的module下的build.gradle文件中添加

apply from: '../config/quality.gradle'11

在工程下新建config文件夹,将如下路径https://github.com/xiaoyaoyou1212/vb-android-app-quality/tree/master/config下的文件下载后放置到该文件夹下,再在该工程下使用gradle findbugs、gradle checkstyle、gradle lint及gradle pmd进行代码检查,检查的结果会在build下的reports文件夹下。

六、参考链接

Gradle插件用户指南(译)拥抱Gradle:下一代自动化工具Gradle脚本基础全攻略
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表