美文网首页
打包部分源码分析

打包部分源码分析

作者: Dapengyou | 来源:发表于2019-06-10 23:54 被阅读0次

    前言

    这篇文章主要描述两个部分:

    1. apk的打包流程
    2. 打包部分源码分析

    apk的打包流程

    在了解打包流程之前,我们先了解下Android资源管理框架

    apk打包流程可以分为以下七步

    • 通过aapt打包res资源文件,生成R.java、resources.arsc和res文件(二进制 & 非二进制如res/raw和pic保持原样)
    • 处理.aidl文件,生成对应的Java接口文件
    • 通过Java Compiler编译R.java、Java接口文件、Java源文件,生成.class文件
    • 通过dex命令,将.class文件和第三方库中的.class文件处理生成classes.dex
    • 通过apkbuilder工具,将aapt生成的resources.arsc和res文件、assets文件和classes.dex一起打包生成apk
    • 通过Jarsigner工具,对上面的apk进行debug或release签名
    • 通过zipalign工具,将签名后的apk进行对齐处理。

    在Android Studio中我们可以双击apk文件查看当前apk的目录结构,包括各个文件的大小,dex中包含了哪些方法及方法数等,非常方便,也可以在解压apk,看里面都包含哪些文件

    我们在编译和打包应用程序资源的过程中,会生成一个resources.arsc文件,这个文件记录了所有的应用程序资源目录的信息,包括每一个资源名称、类型、值、ID以及所配置的维度信息。我们可以将这个resources.arsc文件想象成是一个资源索引表,这个资源索引表在给定资源ID和设备配置信息的情况下,能够在应用程序的资源目录中快速地找到最匹配的资源。

    A. 除了assets和res/raw资源被原装不动地打包进APK之外,其它的资源都会被编译或者处理。

    B. 除了assets资源之外,其它的资源都会被赋予一个资源ID。

    C. 打包工具负责编译和打包资源,编译完成之后,会生成一个resources.arsc文件和一个R.java,前者保存的是一个资源索引表,后者定义了各个资源ID常量。

    D. 应用程序配置文件AndroidManifest.xml同样会被编译成二进制的XML文件,然后再打包到APK里面去。

    E. 应用程序在运行时通过AssetManager来访问资源,或通过资源ID来访问,或通过文件名来访问。

    打包部分源码分析

    研究中。。。。

    相关文章

      网友评论

          本文标题:打包部分源码分析

          本文链接:https://www.haomeiwen.com/subject/zebxbftx.html