打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Android Studio常用Gradle操作
一、Gradle介绍 Gradle是一个高级构建系统和构建工具,允许通过插件自定义构建逻辑。Gradle的实质是配置脚本,执行一种类型的配置脚本时就会创建一个关联的对象,它由三种脚本类型构成,分别是构建脚本(Build Script)、初始化脚本(Init Script)及设置脚本(Settings Script),其对应的三种代理对象分别是Project对象、Gradle对象及Settings对象。二、Gradle基础配置 1. Android Studio对应工程目录

 
2. settings.gradle文件介绍 该文件是全局的项目配置文件,里面主要声明一些需要加入gradle的module。 3. build.gradle文件介绍 该文件如果是面向工程的,一般用来存储构建脚本的版本来源及工程的仓库来源,如下图所示,指定的构建工具版本是gradle1.2.3,该工具及全局工程的仓库来源都是jcenter;
```buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:1.2.3' }}allprojects { repositories { jcenter() }}```而如果该文件面向的是对应的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('...')}```4 gradle.properties文件介绍 该文件一般用来存储工程范围内的全局属性,而如果是与开发者个人相关且不便纳入版本控制的属性,则放到 $HOME/.gradle 下的 gradle.properties 文件,比如签署app的密钥等。三、多渠道打包配置 1.在AndroidManifest.xml中设置PlaceHolder(占位符) 在application下添加 ```<meta-data android:name="渠道名称" //渠道名称,可以使用android:value="${变量名}",假如变量名为XYY_FLAVORS,下面使用该变量进行说明 android:value="渠道ID" />```2.在对应module中的build.gradle文件中设置productFlavors(渠道信息)首先在defaultConfig下设置默认渠道 ```manifestPlaceholders = [XYY_FLAVORS: "渠道ID"]```然后在android下指定需要打包的渠道信息 ```productFlavors { 渠道ID1 {} 渠道ID2 {} 渠道ID3 {} 渠道ID4 {} ...}productFlavors.all { flavor -> flavor.manifestPlaceholders = [XYY_FLAVORS: name]}```最后在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) } }}``` 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 } }}```2、在对应工程的build.gradle配置```allprojects { repositories { maven{ credentials{ username '用户名' password '密码' } url '本地仓库路径' } //jcenter() //mavenLocal() }}```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: 密码) } } }}```五、自动化测试配置在需要进行测试的module下的build.gradle文件中添加```apply from: '../config/quality.gradle'```在工程下新建config文件夹,将如下路径https://github.com/xiaoyaoyou1212/vb-android-app-quality/tree/master/config下的文件下载后放置到该文件夹下,再在该工程下使用gradle findbugs、gradle checkstyle、gradle lint及gradle pmd进行代码检查,检查的结果会在build下的reports文件夹下。六、参考链接 1. Gradle插件用户指南(译) 2. 拥抱Gradle:下一代自动化工具 3. Gradle脚本基础全攻略

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
使用Gradle构建Android项目
用Gradle 构建你的android程序
Android Studio之gradle的配置与介绍
Egret打包Android
Android Studio下通过Gradle配置实现资源文件的模块化
build.gradle 配合项目理解
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服