Android的打包过程

来源:互联网 发布:知乎2017校园招聘 编辑:程序博客网 时间:2024/06/05 00:39

简单的概括了android的打包的过程

流程概述

1、打包资源文件,生成R.java文件
2、处理aidl文件,生成相应java 文件
3、编译工程源代码,生成相应class 文件
4、转换所有class文件,生成classes.dex文件
5、打包生成apk
6、对apk文件进行签名
7、对签名后的apk文件进行对其处理

android_build.png-87kB

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

检查AndroidManifest.xml的合法性,然后检查res目录下的资源子目录内资源文件名的合法性、向资源表table添加条目,编译res和asert下的资源生成resource.arsc,编译生成R.java文件。并且对res目录下的xml文件编译。最后将所有的资源和resource.arsc文件,以及编译过的xml文件打包压缩为resources.ap_文件

处理aidl文件,生成相应java 文件

使用aidl工具生成对应的java文件

编译工程源代码,生成相应class 文件

java compiler实现对java文件转向.class文件

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

将class文件转换,生成classes.dex文件,转换工具为dx。即将字节码转换为Dalvik字节码,压缩常量池、消除冗余信息。

打包生成apk

代码构建了一个ApkBuilder类,然后以包含resources.arsc的文件为基础生成apk文件
通过apkbuilder打包生成apk文件。首先以resources.arsc文件为基础生成apk,接着添加res和assert下的资源,然后写入依赖库。

对apk文件进行签名

android的应用程序需要签名才能在android设备上安装,签名apk文件有两种情况:一种是在调试程序时进行签名,使用eclipse开发android程序时,在编译调试程序时会自己使用一个debug.keystore对apk进行签名;另一种是打包发布时对程序进行签名,这种情况下需要提供一个符合android开发文档中要求的签名文件。签名的方法也分两种:一种是使用jdk中提供的jarsigner工具签名;另一种是使用android源码中提供的signapk工具,它的代码位于android系统源码build\tools\signapk目录下。

对签名后的apk文件进行对其处理

对apk包进行对齐处理,工具为zipalign。对齐处理即使得所有资源文件距离文件起始偏移为4字节的整数倍,这样通过内存映射访问apk文件时处理速度更快

0 0
原创粉丝点击