前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android中Gradle使用

Android中Gradle使用

作者头像
海哥@开发
发布2022-04-06 14:19:53
8360
发布2022-04-06 14:19:53
举报
文章被收录于专栏:海哥聊技术

什么是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<用户名>.gradle\wrapper\dists 目录 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"
}
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2016-04-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 海哥聊技术 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是Gradle?
  • 为什么用Gradle
  • Gradle的下载
  • Gradle在android中基本使用
    • 1.mobile-stage/app/build.gradle
      • 2.mobile-stage/app/gradle/ gradle-wrapper.properties
        • 3.mobile-stage/ build.gradle
          • 4.mobile-stage/settings.gradle
            • 5如何引用maven中的jar
            • Gradle生成apk
              • 切换到项目的根目录,执行gradlew -v
                • 执行gradlew clean
                  • 最后执行gradlew build
                    • 生成签名后的apk
                    • Gradle其它操作
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档