ToB企服应用市场:ToB评测及商务社交产业平台

标题: Android APK构成&编译打包流程详解 [打印本页]

作者: 锦通    时间: 前天 23:57
标题: Android APK构成&编译打包流程详解
Android APK(Android Package)是 Android 应用的安装包文件,其构成和打包流程涉及多个步调和文件结构。以下是详细的阐明:

一、APK 的构成


APK 是一个 ZIP 格式的压缩包,包罗应用运行所需的所有文件。解压后主要包罗以下内容:

二、APK 打包流程


Android 应用的构建流程通过 Gradle 和 Android 构建工具链(如 AAPT2、D8、R8 等)完成,主要步调如下:
1. 资源处理


2. 代码编译


3. 资源与代码合并


4. 原生库处理


5. APK 签名


6. APK 对齐优化


工具名称功能先容在操纵体系中的路径aaptAndroid资源打包工具${ANDROID_SDK_HOME}/build-tools/30.0.0/aaptaidlAndroid接口描述语言转化为.java文件的工具${ANDROID_SDK_HOME}/build-tools/30.0.0/aidljavacjava Compiler java代码转class文件${JDK_HOME}/javac或/usr/bin/javacdex转化.class文件为Davik VM能识别的.dex文件${ANDROID_SDK_HOME}/build-tools/30.0.0/dxapkbuilder天生apk包???没有找到jarsigner.jar文件的签名工具${JDK_HOME}/jarsigner或/usr/bin/jarsignerzipalign字节码对齐工具${ANDROID_SDK_HOME}/tools/zipalign
三、详细构建流程图

  1. 源代码 (Java/Kotlin)  --> 编译 --> .class 文件 --> D8/R8 --> classes.dex
  2. 资源文件 (res/, assets/) --> AAPT2 --> resources.arsc + 二进制 XML
  3. 原生库 (JNI) --> 按架构分类打包到 lib/
  4. 合并所有文件 --> 未签名 APK --> 签名 --> 签名后的 APK --> zipalign 对齐 --> 最终 APK
复制代码

四、构建工具链演进



五、优化与扩展



六、捏造机演进

捏造机是一个可以运行 class , odex , oat 可执行文件的运行环境 ;
常见的捏造机有 Java 捏造机、Dalvik 捏造机 、 ART 捏造机 ;
Java 捏造机 : 运行的 class 字节码文件 , 运行程序时解码 class 文件中的内容 ; 基于栈架构 , 须要频仍在栈上读写数据 , 造成较多的指令分派 , 更多的内存访问次数 , 比力耗费 CPU 时间 ;
编译时 : Java 源码 , 使用 javac 编译器 , 编译成 class 字节码文件 ; 运行时 : 类加载器通过 Java 类库验证字节码 , 验证通过会后进入 Java 捏造机 , 进入 Java 解释器 或 即时编译器 , 然后进入运行时体系 , 之后进入操纵体系 , 然后调用硬件 ;
Dalvik 捏造机 : 基于 JIT 机制 ( 即时编译技术 ) 
Android 5.0 以下使用的捏造机是 Dalvik 捏造机 , 该捏造机的可执行文件是 dex 文件 , 该文件比 class 字节码文件更小 ; JIT ( Just In Time ) 即时编译技术 , 对应 Dalvik 捏造机 ; 基于寄存器架构 , 通过寄存器间接访问数据 , 该方式比基于栈架构速度更快 ;
ART 捏造机 :
Android 5.0 以上使用的捏造机是 ART 捏造机 ; AOT ( Ahhead Of Time ) 预编译技术 , 对应 ART 捏造机 ; Java 捏造机 / Dalvik 捏造机 / ART 捏造机 都向上层提供了 3 个接口JNI_GetDefaultJavaVMInitArgs JNI_CreateJavaVM JNI_GetCreatedJavaVMS ; 捏造机之间可实现无缝衔接 ;
Dalvik 捏造机 与 ART 捏造机区别 : 捏造机中有个 persist.sys.dvlvik.vm.lib 字段 , 如果该字段存储的是 libdvm.so , 该捏造机是 Dalvik 捏造机 ; 如果该字段存储的是 ;ibart.so , 该捏造机是 ART 捏造机 ;
Dalvik 捏造机 与 ART 捏造机可执行文件 :
Dalvik 捏造机加载 dex 文件加载时不是直接加载 dex 文件 , 加载执行的是 odex 文件 , odex 文件是通过 dexopt 工具对 dex 进行优化天生的 ;
ART 捏造机加载 dex 文件时加载的是 oat 文件 , oat 文件时通过 dex2oat 工具对 dex 文件进行优化天生的 ;

通过理解 APK 的构成和打包流程,开发者可以更好地优化应用性能、调试构建题目,并掌握高级构建技术(如模块化、动态交付)。

参考:
1. 深入详解Apk编译打包流程
2. APK 打包流程 ( 文件结构 | 打包流程 | 安装流程 | 安卓捏造机 )
3. Android 打包流程

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4