APK打包流程

文章目录

        APK结构

        初略流程
        细化流程
            1.打包资源文件,生成R.java文件
            2.处理aidl文件,生成相应的Java文件
            3.编译项目源代码,生成class文件
            4.转换所有的class文件,生成classes.dex文件
            5.打包生成APK文件
            6.对APK文件进行签名
            7. 对签名后的APK文件进行对齐处理

APK结构
APK打包流程
apk结构

apk是一个压缩包,里面有lib,META-INF,classes.dex,res,resources.arsc文件夹和文件。下面看看它们各自的作用。

APK打包流程

 

初略流程
APK打包流程

 

 


谷歌官方给出的打包流程图。
先是把代码编译成Dex,然后是和资源文件整合成一个APK,再者加签名,最后出来之前还要用zipalign工具优化一下。
细化流程
APK打包流程

 

 


详细打包流程
上面这个图主要是有7个打包流程。
1.打包资源文件,生成R.java文件

aapt来打包res资源文件,生成R.java、resources.arsc和res文件。

    res目录
APK打包流程

 

 
    R.java文件
    R.java是我们在编写代码的时候会用到的,里面有静态内部类,资源等。
    resources.arsc文件
    resources.arsc这个文件记录了所有的应用程序资源目录的信息,包括每一个资源名称、类型、值、ID以及所配置的维度信息。是一个资源索引表,在给定资源ID和设备配置信息的情况下能快速找到资源。

2.处理aidl文件,生成相应的Java文件

aidl(Android Interface Definition Language,Android接口描述语言),位于android-sdk/platform-tools目录下。aidl工具解析接口定义文件然后生成相应的Java代码接口供程序调用。如果项目没用到aidl则跳过这一步。
3.编译项目源代码,生成class文件

Java Compiler阶段。项目中所有的Java代码,包括R.java和.aidl文件,都会变Java编译器(javac)编译成.class文件,生成的class文件位于工程中的bin/classes目录下。
4.转换所有的class文件,生成classes.dex文件

dex阶段。通过dx工具,将.class文件和第三方库中的.class文件处理生成classes.dex文件。该工具位于android-sdk/platform-tools 目录下。dx工具的主要工作是将Java字节码转成成Dalvik字节码、压缩常量池、消除冗余信息等。
5.打包生成APK文件

apkbuilder阶段。通过apkbuilder工具,将aapt生成的resources.arsc和res文件、assets文件和classes.dex一起打包生成apk。打包的工具apkbuilder位于 android-sdk/tools目录下。
6.对APK文件进行签名

Jarsigner阶段。通过Jarsigner工具,对上面的apk进行debug或release签名。
7. 对签名后的APK文件进行对齐处理

通过zipalign工具,将签名后的apk进行对齐处理。工具位于android-sdk/tools目录下。对齐的主要过程是将APK包中所有的资源文件距离文件起始偏移为4字节整数倍,这样通过内存映射访问apk文件时的速度会更快。对齐的作用就是减少运行时内存的使用。

总结一下

详细打包流程。
详细打包流程

————————————————
版权声明:本文为CSDN博主「Okloong」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/loongago/article/details/89646920

上一篇:一个时代即将终结!安卓应用告别APK格式


下一篇:打包安装App