Android应用的构建过程:资源文件编译并在一个R文件中引用——>java代码被编译——>通过dex转换为dalvik字节码——>最后将这些文件打包成一个APK,APK还会被debug或者Release的key文件签名。
一、Gradle和Android Studio入门
1.1Android Studio
1.2理解gradle基础
build.gradle(后面用"构建脚本"代替)
因为Groovy基于jvm,所以不用先看Groovy,但是如果想创建自己的任务和插件,那么就需要更深的了解Groovy了。。。但是因为是基于java虚拟机的,所以也可以用java或其他基于java虚拟机的语言来编写自定义插件。
1.2.1项目和任务
一个构建脚本代表一个项目,一个项目包括一个或多个任务,一个任务对象包含一系列动作对象,这些动作对象会按顺序执行(一个单独的任务对象就是一个待执行的代码块,和java中的方法类似)。
构建工具会新建一个动态的模型流,一个一个地执行任务(不会循环)。没有依赖的任务通常优先执行。
gradle构建的三个阶段:
1.2.2构建生命周期
初始化:有几个构建脚本,在该阶段就创建几个项目实例
配置:执行构建脚本并为每个项目实例创建和配置任务
执行:Gradle决定哪个任务会被执行
1.2.3构建配置文件
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.2.1'
}
}
jcenter是一个Maven仓库
每一个Android项目都应该申请该插件:
apply plugin: 'com.android.application'
插件用于扩展Gradle构建脚本的能力。
(但如果您是个依赖库,就用com.android.library,因为是个安卓依赖而不是应用)
android {
compileSdkVersion 22
buildToolsVersion "22.0.1"
}
compileSdkVersion 编译应用的SDK版本 buildToolsVersion 构建工具版本
1.2.4项目结构
一个简单的应用的文件夹结构如图:
源集(source set):一组会被一起执行和编译的源文件。main就是一个源集,androidTest也是一个源集(测试用)
1.4 Gradle Wrapper入门
运行Gradle Wrapper其实和直接运行Gradle没什么不同,那么为什么还要用Gradle Wrapper呢?因为更好的向后兼容,Gradle Wrapper会自动下载需要版本的Gradle。
1.4.1获取Gradle Wrapper
在使用Gradle构建和脱离AS(AndroidStudio)开发时,最好的方式是用Wrapper。
在terminal运行./gradlew -v可查看Gradle Wrapper版本信息
grale下载网址: http://gradle.org/downloads mac可以用Homebrew安装
properties包含了参数配置,决定用哪个版本的Gradle
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
如果想用内部分发的自定义Gradle版本,那么可以修改URL
1.4.2 运行基本构建任务
./gradlew tasks 看到当前所有的任务(./gradlew tasks --all还会显示每个任务对应的依赖) (windows用 gralew.bat .mac 用 ./gradlew)
./gradlew assembleDebug可以编译出debug apk到输出目录(build/outputs/apk/debug)
除了assemble还有:
check:运行所有检查
build 触发 assemble 和 check
clean 清楚项目的输出