目录

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

一、概述

今天主要讲一下Android程序的生成步骤,即Android打包成APK的流程。

通常情况下,在开发过程中打包APK是一件很简单的事,主要可以通过两种方式:

  • 用Eclipse或者Android Studio集成开发环境直接生成APK;
  • 使用Ant工具在命令行方式下打包APK。

不过不管哪种方式,打包APK的本质过程都是一样的。

APK文件: 其实就是一个压缩包,当你解压以后会发现它内部主要就是资源文件classes.dex,这个classes.dex就是Android系统Dalvik虚拟机的可执行文件。

APK打包的流程图:

二、打包流程

1、打包资源文件,生成R.java文件

打包资源的工具是aapt(The Android Asset Packaing Tool),位于android-sdk/platform-tools目录下。在这个过程中,项目中的AndroidManifest.xml文件布局文件XML都会编译,然后生成相应的R.java

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

这一过程中使用到的工具是aidl(Android Interface Definition Language),即Android接口描述语言。位于android-sdk/platform-tools目录下。aidl工具解析接口定义文件然后生成相应的Java代码接口供程序调用。

如果在项目没有使用到aidl文件,则可以跳过这一步。

3、编译项目源代码,生成class文件

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

4、转换所有的class文件,生成classes.dex文件

dx工具生成可供Android系统Dalvik虚拟机执行的classes.dex文件,该工具位于android-sdk/platform-tools 目录下。

任何第三方的libraries.class文件都会被转换成.dex文件

dx工具的主要工作是将Java字节码转成成Dalvik字节码压缩常量池消除冗余信息等。

5、打包生成APK文件

所有没有编译的资源(如images等)编译过的资源和.dex文件都会被apkbuilder工具打包到最终的.apk文件中。

打包的工具apkbuilder位于 android-sdk/tools目录下。apkbuilder为一个脚本文件,实际调用的是android-sdk/tools/lib/sdklib.jar文件中的com.android.sdklib.build.ApkbuilderMain类

6、对APK文件进行签名

一旦APK文件生成,它必须被签名才能被安装在设备上。

在开发过程中,主要用到的就是两种签名的keystore。一种是用于调试的debug.keystore,它主要用于调试,在Eclipse或者Android Studio中直接run以后跑在手机上的就是使用的debug.keystore。另一种就是用于发布正式版本的keystore

7、对签名后的APK文件进行对齐处理

如果你发布的apk是正式版的话,就必须对APK进行对齐处理,用到的工具是zipalign,它位于android-sdk/tools目录下。

对齐的主要过程是将APK包中所有的资源文件距离文件起始偏移为4字节整数倍,这样通过内存映射访问apk文件时的速度会更快。

对齐的作用就是减少运行时内存的使用。

Android APK打包流程相关推荐

  1. rn android mac打包,React-Native之MAC平台Android apk打包流程

    MAC :Android打包流程7步走:(详情参照英文官网) 1).使用keytool首先生成keystore(包含storeFile file.storePassword .keyAlias .ke ...

  2. Android apk打包流程★

    1.apk打包 Android开发中打包apk主要有两种方式: ①使用Android Studio集成直接生成apk: ②使用ant工具在命令行方式下打包apk. 不管哪种方式,打包apk的本质过程都 ...

  3. Android APK 打包过程 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  4. 安卓逆向_1 --- 逆向环境配置、APK 文件结构、APK 打包流程

    哔哩哔哩:https://www.bilibili.com/video/BV1UE411A7rW?p=1 Android 逆向工程师系统培训‹第九期›( 课程目录 ):https://ke.yijin ...

  5. 【Android 安装包优化】APK 打包流程 ( 文件结构 | 打包流程 | 安装流程 | 安卓虚拟机 )

    文章目录 一.APK 文件结构 二.APK 打包流程 三.APK 安装流程 四.安卓虚拟机 一.APK 文件结构 Android 应用的安装包时 以 " .apk " 为后缀的 A ...

  6. apk私钥_移动安全(二)|APK打包流程及签名安全机制初探

    0x00.今天我们聊什么? 今天我们聊些啥?许久不见,是该聊些啥了,话不多说,先来个五毛钱得,聊一聊胡小毛的Android逆向之路吧,当然,你们想知道的一定不是走了这么远的路,胡小毛今年是不是又长高了 ...

  7. android Apk打包过程概述_android是如何打包apk的

    最近看了老罗分析android资源管理和apk打包流程的博客,参考其他一些资料,做了一下整理,脱离繁琐的打包细节和数据结构,从整体上概述了apk打包的整个流程. 流程概述: 1.打包资源文件,生成R. ...

  8. app加固apk文件防止反编译apk打包流程

    文章目录 [1]加固 一.为什么要加固 二.加固方案 ①免费的第三方加固方案 ②付费的第三方加固方案SDK ③Java IO 流实现AES加密dex [2]加固方案的实现方式 [3]apk文件构造 [ ...

  9. Android中APK打包流程

    aapt: android application package tool,SDK (Android打包流程图) #Android打包流程 1.通过aapt工具将 资源文件(res).清单文件(An ...

最新文章

  1. LINQ to SQL语句之 Count/Sum/Min/Max/Avg
  2. 【 数字信号处理 】定点数的表示之二进制数的原码与补码
  3. 过拟合与模型调优(part2)--重抽样技术
  4. MVC Controller与ActionResult的返回值
  5. 高效!Anchor DETR:旷视提出一种基于Transformer的目标检测神器!
  6. Selenium学习(2) 元素定位
  7. 关于物联网规则引擎技术,你想要知道的都在这儿!
  8. 剑指offer——3.实现数组中重复数字查找
  9. 【Flutter】Dart中的类和对象
  10. VS2012+OpenCV2.4.9+Qt5.3.1环境配置
  11. 数据科学 第 5 章 主成分分析(降维)、相关性
  12. 经纬度转换,度转度分秒,度分秒转为度,前端js
  13. 超像素分割图神经网络资料汇总
  14. opengl 4.5离线文档下载
  15. zemax---透镜基础篇
  16. java实现ZUC算法加密解密
  17. ecshop多国货币汇率换算,多国货币切换,多国货币价格转换
  18. 逻辑谬误_新网络谬误
  19. 公司董事会人数怎么确定
  20. 基于关联规则的气象服务智能推荐

热门文章

  1. 使用vs2010生成64位的dll文件
  2. 超级计算机作文650字,努力初中作文650字(通用11篇)
  3. 单片机c语言或运算,单片机avr c语言位运算 与或非 异或逻辑 运算介绍 详解
  4. 机器学习中的特征空间
  5. 【IUI 2020】人在回路机器学习——Human-in-the-Loop AI in Government: A Case Study
  6. Linux中设置开机启动执行命令和普通用户配置环境变量开机启动生效
  7. 用dd命令克隆ubuntu系统
  8. CC2640R2F的各个驱动文件放在哪里比较好
  9. linux系统自动清理日志实现脚本
  10. [附源码]Python计算机毕业设计高校教室管理系统