之前 早期的开发 我们一般使用的是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 。