快速入门安卓Gradle指南(2/10)安卓APP的配置环境
牛客高级系列专栏:
安卓(安卓系统开发也要掌握)
- 想通关安卓面试,请看:《150道安卓高频面试题目录及答案链接》
- 想通关安卓系统面试,请看:《140道安卓系统Framework面试题目录及答案链接》
- 想进阶安卓开发,请看:《Android进阶知识体系解析_15大安卓进阶必备知识点》
- 想了解安卓APP完整开发流程,请看:《安卓APP完整开发流程》
- 想掌握安卓App性能优化,请看:《安卓性能优化讲解和实战专栏》
- 想掌握Gradle语法,制作Gradle插件,请看:《安卓Gradle语法解析和实践大全》
嵌入式
- 想通关嵌入式面试,请看: 《111道嵌入式面试题目录及答案链接》
- 想多掌握几个嵌入式项目,请看:《6个嵌入式项目交流分享(附源码)》
本人是2020年毕业于广东工业大学研究生:许乔丹,有国内大厂CVTE和世界500强企业安卓开发经验,该专栏整理本人对安卓Gradle的理解。网上安卓资料千千万,笔者将继续维护专栏,承诺提供专栏内容免费技术答疑,直接咨询即可,助您提高安卓学习效率!
目录开始⬇
- 1、配置环境的作用
- 2、APK的构建过程
- STEP1:打包资源文件
- STEP2:处理AIDL文件
- STEP3:.java文件转换为.class文件
- STEP4:.class文件转换为classes.dex文件
- STEP5:打包生成APK文件
- STEP6: 对APK文件进行签名
- STEP7:对签名后的APK文件进行对齐处理
- 3、为什么需要构建工具
- 4、为什么是Gradle
- 5、Android Gradle Plugin
- 6、Android Studio
- 7、总结
本文介绍APP开发的配置环境,并进一步引申为什么需要使用Gradle。
1、配置环境的作用
首先,我们需要了解开发一个安卓APP之前,配置的环境有什么作用?接着,再了解需要配置哪些环境。
配置环境的作用最主要的是配置应用构建环境和代码编写环境。而最基础的配置环境,我们需要配置好:
- Gradle
- Android Gradle Plugin
- Android Studio
2、APK的构建过程
我们先了解下安卓APK的打包流程。安卓官网给出了APK打包的基本流程图,全面的介绍了APK打包的流程:
打包APK,主要就是打包代码和资源,上图可以概括为以下7个步骤:
- 打包资源文件;
- 处理AIDL文件;
- 编译Java文件,生成对应的.class文件;
- 把.class文件转化成Davik VM支持的.dex文件;
- 打包生成未签名的.apk文件;
- 将未签名.apk文件进行签名生成一个签名apk文件;
- 将签名后的.apk文件进行对齐处理;
STEP1:打包资源文件
APK的资源主要包括:
- res目录下的文件
- assets目录下的文件
- AndroidManifest.xml文件
打包资源文件的工具是aapt(The Android Asset Packaing Tool),目录 sdk\build-tools\25.0.0\aapt,APK在编译过程中,aapt工具会对资源文件进行编译,编译的步骤可以拆分为两个步骤:
- 将资源文件编译为二进制格式:把所有的Android资源文件进行解析,生成扩展名为.flat的二进制文件。比如是png图片,那么就会被压缩处理,采用.png.flat的扩展名。可以在app\build\intermediates\res\merged\debug文件下查看生成的中间产物
- 链接:合并所有已编译的文件并将它们打包到一个软件包中 首先,这一步会生成辅助文件,生成一个resource.arsc文件和R.java文件,resource.arsc文件是资源索引表,记录资源文件和资源ID之间的映射关系,R.java文件则定义了各个资源的常量值
最后,会将R.java文件,ressources.arsc文件和之前的二进制文件进行打包,打包到一个软件包中,各个资源文件的打包具体为:
- AndroidManifest.xml文件和布局文件XML都会编译,然后生成相应的R.java
- res目录下的资源:该类资源在APP打包前大多会被编译,变成二进制xml文件,并会为每个该类文件赋予一个resource id,对于该类资源的访问,应用层代码则是通过resource id进行访问的
- assets和res/raw资源:不会被编译,将原封不动的打包进APK
STEP2:处理AIDL文件
处理AIDL文件的工具是aidl(Android Interface Definition Language),即Android接口描述语言,目录 sdk\build-tools\25.0.0\aidl。aidl工具就是将aidl.java文件解析为java文件。如果APK中没该使用到AIDL文件,则可以跳过这一步。
STEP3:.java文件转换为.class文件
编译项目源代码阶段,目前APK开发可以使用Java或者Kotlin,编译Java源代码使用工具是Java Compiler(javac),项目中所有的Java代码,包括R.java和aidl.java文件,都会被Java Compiler工具编译成.class文件,生成的class文件位于工程中的app\build\intermediates\javac\debug\classes目录下。
如果使用Kotlin开发,编译Kotlin源代码使用工具是Kotlin Compiler,生成.class文件。
注解处理器也会自动生成代码,详情可以见本系列专栏《注解全解析》一章。注解处理器生成代码也在该阶段,当注解的生命周期被设置为CLASS的时候,就代表该注解会在编译class文件的时候生效,并且生成java源文件和Class字节码文件。
STEP4:.class文件转换为classes.dex文件
在此之前,需要了解.class文件和.dex文件的区别:
- .class文件:java 虚拟机(JVM)使用的可执行文件
- .dex文件:Android Dalvik虚拟机(DVM)使用的可执行文件,dex文件的作用是记录整个工程的所有类文件的信息
至于为何Android基于Java开发的,已经有了java虚拟机,还开发一个DVM虚拟机。这是因为历史原因,Google公司的Androi
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
如果你想学习Android App开发,那么学习Gradle一定是必要的。 Gradle是一种构建工具,用于编译和构建Android应用程序,它可以自动处理依赖关系,生成APK文件等。通过本指南,你将掌握Gradle的基本概念和使用技巧,以及如何在工程中配置Gradle。通过学习Gradle,你可以更高效地构建和管理你的Android应用程序,提高你的开发效率,从而更好地满足用户需求。