快速入门安卓Gradle指南(2/10)安卓APP的配置环境

牛客高级系列专栏:

安卓(安卓系统开发也要掌握)

嵌入式

本人是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打包的流程:

alt

打包APK,主要就是打包代码和资源,上图可以概括为以下7个步骤:

  1. 打包资源文件;
  2. 处理AIDL文件;
  3. 编译Java文件,生成对应的.class文件;
  4. 把.class文件转化成Davik VM支持的.dex文件;
  5. 打包生成未签名的.apk文件;
  6. 将未签名.apk文件进行签名生成一个签名apk文件;
  7. 将签名后的.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%内容,订阅专栏后可继续查看/也可单篇购买

快速入门安卓Gradle指南 文章被收录于专栏

如果你想学习Android App开发,那么学习Gradle一定是必要的。 Gradle是一种构建工具,用于编译和构建Android应用程序,它可以自动处理依赖关系,生成APK文件等。通过本指南,你将掌握Gradle的基本概念和使用技巧,以及如何在工程中配置Gradle。通过学习Gradle,你可以更高效地构建和管理你的Android应用程序,提高你的开发效率,从而更好地满足用户需求。

全部评论

相关推荐

点赞 评论 收藏
分享
点赞 1 评论
分享
牛客网
牛客企业服务