Android Studio配置编译概览
简要介绍
Android Studio 使用高级编译工具包Gradle来自动执行和管理编译流程,同时也允许您定义灵活的自定义编译配置。每个编译配置均可定义自己的一组代码和资源,同时重用所有应用版本共用的部分。Android Plugin for Gradle 与该编译工具包一起使用,共同提供专用于编译和测试 Android 应用的流程和可配置设置。
编译流程
![](https://img.haomeiwen.com/i18306159/4bcadba0a4c1745c.png)
典型 Android 应用模块的编译流程按照以下常规步骤执行:
1、编译器将您的源代码转换成 DEX 文件(Dalvik 可执行文件,其中包括在 Android 设备上运行的字节码),并将其他所有内容转换成编译的资源。
2、APK 打包器将 DEX 文件和编译的资源组合成单个 APK。
3、APK 打包器使用调试或发布密钥库为 APK 签名
4、在生成最终 APK 之前,打包器会使用zipalign工具对应用进行优化,减少其在设备上运行时占用的内存
自定义编译配置
可以配置一下几个方面
1、编译版本类型
默认情况下,Android Studio 会创建调试和发布编译版本类型
2、正式版类型
正式版类型代表您可以向用户发布的不同版本的应用,如免费和付费版应用
3、编译变体
编译变体是版本类型与正式版类型的混合产物
4、清单条目
可以在编译变体配置中为清单文件的某些属性指定值
5、依赖项
编译系统会管理来自本地文件系统以及来自远程代码库的项目依赖项
6、签名
编译系统让您能够在编译配置中指定签名设置,并且会在编译过程中自动为 APK 签名
7、ProGuard
编译系统让您能够为每个编译变体指定不同的ProGuard规则文件
8、多 APK 支持
编译系统让您能够自动编译不同的 APK,并且每个 APK 只包含特定屏幕密度或应用二进制接口 (ABI) 所需的代码和资源。
配置文件类型
Gradle 设置文件
settings.gradle文件位于项目根目录,用于指示 Gradle 在编译应用时应将哪些模块包含在内。
顶级编译文件
顶级build.gradle文件位于项目根目录,用于定义适用于项目中所有模块的编译配置
模块级编译文件
模块级build.gradle文件位于每个project/module/目录,用于为其所在的特定模块配置编译设置。您可以通过配置这些编译设置来提供自定义打包选项(如附加编译版本类型和正式版类型),以及替换main/应用清单或顶级build.gradle文件中的设置。
Gradle 还包含2个属性文件,位于项目根目录,可用于指定 Gradle 编译工具包本身的设置:
gradle.properties
您可以在其中配置项目范围的 Gradle 设置,如 Gradle 守护进程的最大堆大小
local.properties
配置编译系统的本地环境属性,如 SDK 安装路径。由于此文件的内容由 Android Studio 自动生成并且专用于本地开发者环境,因此您不应手动修改此文件或将其检入版本控制系统。
gradle-wrapper.properties
位于\gradle\wrapper\gradle-wrapper.properties,主要用于设置gradle版本信息
源集
Android Studio 按逻辑关系将每个模块的源代码和资源分组为源集。模块的main/源集包含其所有编译变体共用的代码和资源。其他源集目录是可选的
src/main/
此源集包含所有编译变体共用的代码和资源。
src/buildType/
创建此源集可添加特定版本类型专用的代码和资源。
src/productFlavor/
创建此源集可添加特定正式版类型专用的代码和资源。
src/productFlavorBuildType/
创建此源集可添加特定编译变体专用的代码和资源。
如果不同源集包含同一文件的不同版本,Gradle 将按以下优先顺序决定使用哪一个文件
编译变体 > 编译版本类型 > 正式版类型 > 主源集 > 库依赖项
个人观点
从项目角度来看,差别小使用源集管理项目还是可以的,但是如果项目比较大点,功能相对差异较大,一般都是使用repo+git管理,因此源集使用频率较低
源集涉及到,自定义编译配置的前4项
最常用到的,是自定义编译配置的5,6,7项
后续文章会对每个地方都会介绍,敬请期待