博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Gradle在Android中的简单使用
阅读量:5975 次
发布时间:2019-06-20

本文共 4693 字,大约阅读时间需要 15 分钟。

Gradle在Android中简单的使用

还望支持个人:

Android Studio 使用gradle进行工程构建,为了更好的了解整个android开发过程(开发,调试,发布),就需要对gradle有一个初步的了解,至少需要知道他的每一个配置所代表的意思,更深层次的了解就要看个人兴趣了。

  • Gradle简述
  • android工程中的gradle
  • 常见的gradle配置
  • Gradle学习参考

Gradle简述

其实有关gradle的介绍网上有很多的相关资料了,简单来说它就是一个构建java工程的工具,帮助我们管理编译java工程。高大上点就是他们自己在GitHub上说的那样,是个很牛逼的面对jvm的编译系统(A powerful build system for the JVM.)。gradle的特点有很多,比较重要需要了解的有如下三个特点(不全面,只是概括):

1)是一个构建整合工具
就是可以直接与其他构建系统进行切换
2)支持多工程构建
这也是他的特色,我们在Android Studio中可以很明显的看看到在新建选项中有两个很不一样的新建方式,一种是New Project,这种方式会帮你真的建立一种gradle工程,而新建的gradle工程中会在工程一级目录下默认创建一个app的文件夹子(即我们配置的android项目),而New Module则是基于一个已有的gradle的工程下创建一个android 工程,同样也是默认在工程的一级目录下创建,同时我们的Project下的settings.gradle中会添加一个include工程。
include  'app' , 'source';

如上,settings.gradle就 是多工程配置文件,通过include 来引入子工程,默认子工程位置是在当前Project的主目录下,若不再默认位置,需要在settings.gradle中指定子工程文件位置,如:

include 'app'project(':app').projectDir = new File('../app')
3)gradle是采用groovy脚本语言实现配置的而非xml
groovy是一种基于jvm的脚本语言,面向对象,可以很好的帮助我们维护构建项目,最直观的例子,多版本发布可以直接通过简短的几句脚本配置语句完成。

Android工程中的gradle

1、Project 中的gradle

- gradlew
linux或者mac的编译脚本,可以通过./gradlew build编译当前project
- gradlew.bat
windows下的编译脚本
- gradle.properties
gradle的属性配置文件,一般情况不需要我们配置什么信息,保持默认即可
- build.gradle
gradle的编译脚本,每个工程子工程中都会存在,是编译配置的主要文件
- settings.gradle
多项目导入的配置文件,可以在这儿将你的所有的子过程导入

2、Module中的gradle

  • build.gradle
    module中只需要一个build.gradle即可,用于配置工程的结构,依赖管理,签名信息,sdk编译版本,包名信息,发布渠道或版本控制等。

常见的gradle配置

介绍build.gradle中一些常见配置信息的含义和使用简单的一些配置帮助我们完成一些预期的效果。

buildscript {    repositories {    //依赖支持jcenter仓库获取        jcenter()    }    dependencies {        classpath 'com.android.tools.build:gradle:2.1.0'        // NOTE: Do not place your application dependencies here; they belong        // in the individual module build.gradle files    }}//当前的project的所有子模块,即settings.gradle中所有项目subprojects{    //共有配置}//当前project中所有项目均allprojects {    repositories {        jcenter()    }}//clean 任务可以帮助我们删除编译生成的build目录task clean(type: Delete) {    delete rootProject.buildDir}

如上,Android Studioi默认是采用jcenter()仓库来获取gradle依赖,jcenter是一种远程的maven依赖库,我们也可以将自己的项目上传jcenter,这样就可以直接在添加jcenter库后通过依赖配置远程依赖编译我们的工程,如高德,百度,facebook等均提供jcenter库依赖方式。同时,除了maven仓库,gradle还支持Ivy仓库,可通过如下方式添加:

//添加仓库,一般在我们导入aar时会用到repositories {    flatDir {         //编译时会在libs目录下查找依赖        dirs 'libs'    }}

android 项目中常用的build.gradle如下:

//插件声明,这个也可以自定义apply plugin: 'com.android.application'//基本的android 配置android {    compileSdkVersion 23         //编译的sdk版本    buildToolsVersion "23.0.3"   //编译工具的版本     //android的默认配置信息    defaultConfig {        //报名信息,可以没有,若没有会默认从manifest.xml中读取包名        applicationId "com.hfcai.liferecord"           minSdkVersion 19        targetSdkVersion 23        versionCode 1        versionName "1.0"    }    buildTypes {    //发布版        release {        //dex分包属性            minifyEnabled false            //混淆设置            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'        }        //测试版       debug{       //配置信息       }    }    //apk签名配置    signingConfigs {        //测试版本        release {            //签名文件路径            storeFile file('../keystore/personal.jks')            //签名文件的密码            storePassword 'personal'            //用户名            keyAlias 'personal'            //用户名的密码            keyPassword 'personal'        }    }    //修改生成的apk名字    applicationVariants.all { variant ->        variant.outputs.each { output ->            //定义无类型属性            def oldFile = output.outputFile           if (variant.buildType.name.equals('release')) {                def releaseApkName = 'test.apk'                output.outputFile = new File(oldFile.parent, releaseApkName)            }            if (variant.buildType.name.equals('debug')) {            }            output.assemble.doLast {            //文件拷贝操作                copy {                    from output.outputFile.getAbsolutePath()                    into('../Personal/out/apks/')                }            }        }    }}//添加Ivy仓库,查找libs下的依赖repositories {    flatDir {        dirs 'libs'    }}//android 的依赖管理配置dependencies {    compile fileTree(dir: 'libs', include: ['*.jar'])    compile 'com.android.support:appcompat-v7:23.4.0'    compile 'com.android.support:design:23.4.0'    //Ivy依赖    compile(name: 'AudienceNetwork', ext: 'aar')}

以上,为android工程编译的一些基本配置,还有类似多渠道打包,新建task任务等。如将依赖包打入jar:

//新建task,编译jar包task makeJar(type: Jar){    delete 'build/libs/test.jar'    new File('libs').eachFile {        from zipTree(it)    }    from fileTree(dir:'src/main',includes: ['java/**'])    destinationDir = file('build/libs/test.jar')}makeJar.dependsOn(build)

可以通过命令 ./gradlew makJar直接执行或者在android studio 右边框的gradle对应工程的Task–>other–makeJar双击执行,执行后会在build/libs下生成一个test.jar文件。

Gradle学习参考


转载于:https://www.cnblogs.com/amiko/p/7906241.html

你可能感兴趣的文章
Behavioral模式之Memento模式
查看>>
Work Management Service application in SharePoint 2016
查看>>
Dos 改动IP 地址
查看>>
CSS3鼠标悬停图片上浮显示描述代码
查看>>
URL编码总结
查看>>
JDBC 4.2 Specifications 中文翻译 -- 第九章 连接
查看>>
es6的Proxy(代理)
查看>>
CentOs 7.2下ELK日志分析系统搭建
查看>>
Eclipse Modeling Framework, 2nd Edition. (EMF)学习笔记(一)——EMF介绍
查看>>
Laravel 源码解读:php artisan make:auth
查看>>
2017-06-08 前端日报
查看>>
[转]json2.js 源码解读
查看>>
使用 python-nmap 进行端口扫描
查看>>
几个让我印象深刻的面试题(二)
查看>>
[译]高性能浏览器网络(第九章)--HTTP简史
查看>>
【转】ionic run android 成功launch success,但是genymotion虚拟机没有显示
查看>>
厚积薄发,看腾讯云如何快速从IPv4向IPv6演进?
查看>>
百度举办第七届技术开放日,揭秘春晚红包技术支撑
查看>>
Oracle宣布提供新的Java支持价格体系
查看>>
广发银行运维实践分享:Docker适配传统运维那些事
查看>>