AS之gradle的理解一(入门)

来源:互联网 发布:在职软件工程硕士叫停 编辑:程序博客网 时间:2024/05/16 17:54

之前 早期的开发 我们一般使用的是eclipse  也就是java的IDE  我们依靠添加ADT来完成android的开发 构建 编译 打包等一系列的工作  但是 对于一些依赖 我们使用的是将jar包添加到项目然后引用。一旦使用多个jar 包 那么jar的升级 就会成为很大的问题

反观AS 我们都知道 它是使用gradle进行项目的构建  对于依赖 是直接使用地址的形式 那么更新起来 直接使用该地址即可  但是 gradle并不像我们想的一样 他是Gradle官方开发的 并不是AS内置的 所以我们使用gradle一般需要在project(整个项目都需要依赖 )中添加plugin  也就是添加gradle插件 从而获得gradle支持(classpath 'com.android.tools.build:gradle:2.2.1' )

我们一般不同的项目使用的gradle版本不一样 Gradle通过gradle wrapper (gradle包装)来实现不同的项目配备不同的小gradle 来完成

AS中 包含的gradle配置文件


 Android 项目包含的 Gradle 配置文件 介绍

这里姑且以我很早在 GitHub 开源的 9GAG 项目为例,来稍微介绍下一个完整的 Android 项目包含的基本 Gradle 相关的配置文件:

红色标记部分从上到下咱们来一步步分析:

9GAG/app/build.gradle

这个文件是 app 文件夹下这个 Module 的 gradle 配置文件,也可以算是整个项目最主要的 gradle 配置文件,具体里面的配置以后再介绍。

9GAG/extras/ShimmerAndroid/build.gradle

每一个 Module 都需要有一个 gradle 配置文件,语法都是一样,唯一不同的是开头声明的是 

apply plugin: ‘com.android.library’

9GAG/gradle

这个目录下有个 wrapper 文件夹,里面可以看到有两个文件,我们主要看下 gradle-wrapper.properties 这个文件的内容:

可以看到里面声明了 gradle 的目录与下载路径以及当前项目使用的 gradle 版本,这些默认的路径我们一般不会更改的,这个文件里指明的 gradle 版本不对也是很多导包不成功的原因之一。

9GAG/build.gradle

这个文件是整个项目的 gradle 基础配置文件,默认的内容就是声明了 android gradle plugin 的版本。

9GAG/settings.gradle

这个文件是全局的项目配置文件,里面主要声明一些需要加入 gradle 的 module,我们来看看 9GAG 该文件的内容:

7  如何正确导入下载的开源项目?

我们经常会在 GitHub 发现一些优秀的开源项目,然后想要下载学习,然而第一步一般都是把源码导入到 AS 里,然后运行起来看下效果,但是经常会运行失败,这里我来给大家说下导入开源项目的正确姿势:

下载一个Demo,先打开每个 module下的 gradle 文件,即 app 目录下的 build.gradle 以及各个 library 下的 build.gradle ,首先查看 compileSdkVersion 和 buildToolsVersion,因为有些时候你本地的版本和下载的版本不一致,那么就会导致失败。

然后就是检查 gradle-wrapper ,Google 有些时候要求不同的 AS 支持不同的 gradle 版本。比如 AS 1.0 的时候要求必须使用 gradle 1.x 的版本,等到 AS 2.0 的时候,Google 不支持 gradle1.x 的版本,这个时候你必须手动更新下 android gradle plugin 的版本,然后重新同步下。

检查以上两个地方基本就可以导入并运行了,如果还有其他问题,那可能就是环境或者项目本身的问题了。

8  认识下几个命令

上面提到了,假设我们没有 IDE ,只有类似 Sublime、Atom、Vim这种轻量编辑器怎么办?那我们就没法开发 Android 了么?然而只要有构建工具,不需要 IDE 我们一样有办法开发,这个时候我们就需要用到几个有用的 Gradle 命令了:

./gradlew -v 版本号

./gradlew clean 清除9GAG/app目录下的build文件夹

./gradlew build 检查依赖并编译打包

这里注意的是 ./gradlew build 命令把 debug、release 环境的包都打出来,如果正式发布只需要打 Release 的包,该怎么办呢,下面介绍一个很有用的命令 assemble , 如

./gradlew assembleDebug 编译并打Debug包

./gradlew assembleRelease 编译并打Release的包

值得注意的是,以上所有命令都是在终端里执行,并且必须要切换到所在项目的根目录下执行,win系统直接执行 gradlew 。


3 0
原创粉丝点击