Android中Gradle使用

2022-04-06 14:19:53 浏览数 (1)

什么是Gradle?

Gradle是一种依赖管理工具,基于Groovy语言,面向Java应用为主,它抛弃了基于XML的各种繁琐配置,取而代之的是一种基于Groovy的内部领域特定(DSL)语言。

为什么用Gradle

代码语言:javascript复制
Ant能打包(构建)apk。----任务执行

Maven管理jar包。(打包很麻烦)----依赖管理

依赖管理:编写程序所需要的jar包,可以称作依赖,程序需要依赖这些jar包来更高效的完成。依赖管理就是指这些依赖(包)进行管理。

任务执行:每次测试都需要生成apk包进行测试,生成apk包是一个可以重复的流程,也可以称为任务,这个过程就叫做任务执行。Ant相当于把这相同的任务给自动化实现了。

Gradle能做ant和maven的事。依赖管理(maven)和任务执行(Ant)

Gradle的下载

在Android Studio 中新建项目成功后会下载Gradle 地址: Win平台会默认下载到 C:Documents and Settings<用户名>.gradlewrapperdists 目录 gradle-x.xx-all 的文件夹

Gradle在android中基本使用

Gradle在android中基本使用

1.mobile-stage/app/build.gradle

代码语言:javascript复制
apply plugin: 'com.android.application'
//声明是Android程序

android {

//编译sdk的版本
compileSdkVersion 22
//android打包工具版本
buildToolsVersion "23.0.3"

defaultConfig {
    //应用的包名
    applicationId "cn.gyyx.phonekey"
    minSdkVersion 10
    targetSdkVersion 22
    versionCode 17
    versionName "2.1.2.2"
}
buildTypes {
    release {
        //是否混淆
        minifyEnabled false
        //混淆文件的位置
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}
//移除lint检查的error
 lintOptions {
  abortOnError false
 }
}

dependencies {
//编译libs目录下的所有jar包
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:22.2.1'
compile 'com.android.support:design:22.2.1'
compile 'com.squareup.okhttp:okhttp:2.4.0'
compile 'com.squareup.okio:okio:1.5.0'
compile 'com.google.code.gson:gson:2.2.4'
compile files('libraries/xUtils-2.6.14.jar')
}

2.mobile-stage/app/gradle/ gradle-wrapper.properties

声明了gradle的目录与下载路径以及当前项目使用的gradle版本

3.mobile-stage/ build.gradle

声明仓库的源,这里可以看到是指明的jcenter(),jcenter可以理解成是一个新的中央远程仓库,兼容maven中心仓库。Studio当前版本是1.5,gradle版本也是1.5

4.mobile-stage/settings.gradle

其中MVP和app都是module

5如何引用maven中的jar

1.工作空间build.gradle中添加maven仓库的位置

2.项目中的build.gradle引用jar

用冒号分割: groupId:artifactId:version 在项目中就可以使用jar了

Gradle生成apk

切换到项目的根目录,执行gradlew -v

来查看下项目所用的Gradle版本 如果你是第一次执行会去下载Gradle,这个过程如果不翻墙非常慢,建议翻墙

下载成功之后会看到信息:

执行gradlew clean

执行这个命令会删除build目录,会看到如下信息:

最后执行gradlew build

这个命令会直接编译并生成相应的apk文件,如果看到如下字样就代表build成功了。 Build时失败了两次,对比下demo和依赖库中是没有lint检查。添加后build成功了

app/build/outputs/apk 目录下会看到类似于app-debug-unaligned.apk, app-release-unsigned.apk等,看名字应该能理解意思,unaligned代表没有进行zip优化的,unsigned代表没有签 名的。然后就可以直接安装apk查看运行效果了。

生成签名后的apk

App/build.gradle

配置之后每次再build的时就会生成签过名的包了

Gradle其它操作

  1. Project 和 Task Gradle中有两个基本的概 念:project和task。每个Gradle的构建由一个project构成,它代表着需要被构建的组件或者构建的整个项目。每个project由一 个或者多个task组成。task代表着Gradle构建过程中可执行的最小单元。例如当构建一个组件时,可能需要先编译、打包、然后再生成文档或者发布 等,这其中的每个步骤都可以定义成一个task。
  2. 构建第一个Task 和Ant运行时读取build.xml类似,Gradle运行时默认会读取build.gradle这个文件, 当然你也可以使用参数"-b"来指定其他的xxx.gradle 下面,让我们新建一个build.gradle文件,然后输入如下内容:
代码语言:javascript复制
task hello { doLast{ println "hello world" } }

这个构建的脚本很简单,就是输出hello world。为了运行这个构建,我们应该在当前目录下执行 "gradle hello",即gradle TaskName。 doLast意思是定义一个行为(映射Gradle中的Action类),放在当前task的最后,类似的,还有doFirst, 表示将定义的行为放在当前task最前面,例如

代码语言:javascript复制
task hello {
doLast{
  println "Hello world"
}   
doFirst{
  println "I am xxx"
}   
}

执行gradle hello, 将输出 "I am xxx" "Hello world"

另外,你也可以使用如下更简洁的方式来定义task:

代码语言:javascript复制
task hello <<  {
 println "hello world"
}

0 人点赞