• apk组成和Android的打包流程


    resources.arsc 编译后的二进制资源文件。

    classes.dex .dex 文件。最终生成的 Dalvik 字节码
    AndroidManifest.xml 程序的全局清单配置文件
    res uncompiled resources 。存放资源文件的目录。
    META-INF 是签名文件夹。 存放签名信息
    MANIFEST.MF (清单文件):其中每一个资源文件都有一个 SHA-256-Digest 签名,MANIFEST.MF文件的 SHA256(SHA1)并 base64 编码的结果即为 CERT.SF 中的 SHA256-Digest-Manifest 值。
    CERT.SF(待签名文件):除了开头处定义的SHA256 SHA1 -Digest-Manifest 值,后面几项的值是对 MANIFEST.MF文件中的每项再次 SHA256 base64 编码后的值。
    CERT.RSA (签名结果文件):其中包含了公钥、加密算法等信息。首先对前一步生成的 MANIFEST.MF 使用了 SHA256( SHA1 -RSA 算法,用开发者私钥签名,然后在安装时使用公钥解密。最后,将其与未加密的摘要信息 (MANIFEST.MF 文件)进行对比,如果相符,则表明内容没有被修改。
    具体打包过程
           1.aapt 打包资源文件生成 R.java 文件; aidl 生成 java 文件
           2. java 文件编译为 class 文件
           3.将工程及第三方的 class 文件转换成 dex 文件
            4.将 dex 文件、 so 、编译过的资源、原始资源等打包成 apk 文件
            5.签名
            6.资源文件对 齐,减少运行时内存
    通过 AAPT 工具进行资源文件 打包,生成 R.java resources.arsc res 文件
    通过 AIDL 工具处理 AIDL 文件,生成对应的 Java 接口文件。
    通过 Java Compiler 编译 R.java Java 接口文件、 Java 源文件,生成 .class 文件。
    通过 dex 命令,将 .class 文件和第三方库中的 .class 文件处理生成 classes.dex ,该过程主要完成 Java 字节码转换成
    Dalvik 字节码,压缩常量池以及清除冗余信息等工作。
    通过 ApkBuilder 工具将资源文件、 DEX 文件打包生成 APK 文件。
    通过 Jarsigner 工具,利用 KeyStore 对生成的 APK 文件进行签名。
    assets res/raw:
          这两个文件目录里的文件都会直接在打包 apk 的时候直接打包到 apk 中,携带在应用里面供应用访问,而且不会被编 译成二进制;

    他们的不同点在于:
          1 assets 中的文件资源不会映射到 R 中,而 res 中的文件都会映射到 R 中,所以 raw 文件夹下的资源都有对应的 ID;
          2 assets 可以能有更深的目录结构,而 res/raw 里面只能有一层目录;
          3 、资源存取方式不同, assets 中利用 AssetsManager ,而 res/raw 直接利用 getResource()
    openRawResource(R.raw.fileName), 很多人认为是 R.id.filename, 其实正确的是 R.raw.filename, 就像 R.drawable.filename一样,整体表示一个 ID 值,并非是 R.id.filename;
  • 相关阅读:
    2023年05月 Python(五级)真题解析#中国电子学会#全国青少年软件编程等级考试
    深入理解 Dockerfile 和 docker-compose[实战篇]
    [附源码]Python计算机毕业设计Django企业人事管理系统
    详解MES系统在质检管理中的多角度应用
    基于MobileNet的轻量级卷积神经网络实现玉米螟虫不同阶段识别分析
    第四章:视图【mysql数据库-进阶】
    python类接口和抽象超类
    程序员的几个网站
    Java项目防止SQL注入的几种方案
    隆重推出 Incredibuild 10
  • 原文地址:https://blog.csdn.net/tianhongfan10106/article/details/126877887