apk打包流程

apk打包流程,第1张

aapt给每一个非assets目录的资源定义一个资源ID,它是一个4字节(byte = 32bit)的数字,格式是PPTTNNNN,PP代表资源所属的包(package),TT代表资源的类型(Type),NNNN代表这个类型下面的资源名称(Entry ID)。

对签名后的apk进行解压缩,在META-INF目录下一般会有三个文件 MANIFESTMF、CERTSF和CERTRSA 三个文件,这里用不同的证书和签名方式得到的名字可能不同。

APK包在安装的时候,是按照RSA->SF->MF的顺序依次校验的:先用公钥信息还原签名信息,然后和SF文件中的信息进行比对,然后用同样的摘要算法对MF文件里的每一个条目计算对应的摘要信息,然后比对MF是否一致。

缺点

简单来说,v2签名模式在原先apk块中添加了一个新的块(签名块),新的块存储了签名、摘要、签名算法、证书链和一些额外的属性等。这个块有特定的格式。

apk的格式签名后变成了下面4个部分

其中第三部分有一个偏移值直接指向了第二部分的开始位置,而每个第二部分如Central directory header1 Central directory header n 的有一个便宜字段指向了其中对应的第一部分。

签名块包括对apk第一部分、第二部分和第三部分的二进制内容做加密保护,摘要算法以及签名算法。签名块本身不做加密,这里需要特殊注意的是由于第三部分包含了对第二部分的引用偏移,因此如果签名块做了改变,比如在签名过程中增加了一种签名算法,或者增加签名者等信息就会导致这个偏移发生改变,因此在算摘要信息的时候需要剔除这个音粗要以第三部分对签名块的偏移来做计算。

接下来我们看看具体的apk签名块格式,改格式分为4个部分:

怎样找到v2分块的位置:ZIP中央结尾记录->中央目录其实偏移量->固定magic值,然后就可以定位v2分块的位置。

v2签名块负责保护第1、3、4部分的完整性,以及第二部分包含的APK签名方案 v2分块中的 signed data 分块的完整性。第1、3、4部分的完整性是通过内容摘要来保护的,这些摘要保存在 signed data 分块中,而 signed data 分块的完整性是通过签名保证的。下面开计算摘要的过程

第1、3和4部分的摘要要采用以下的计算方法

从上面我们可以知道v2模式块有点类似于

第一步,在Eclipse中选择需要打包的项目,然后右键--选择Export,会d出一个打包的提示框,
按Next之后,会继续出现一个提示框,这里你可以选择自己需要打包的项目(默认是刚才选中的)
按Next之后,会d出一个关于“Keystore”的提示,选择“Create new Keystore”,并浏览、选择签名文件要保存的路径,
(关于Keystore的原理、作用等这里暂时不细说,请大家发布前务必保存好该签名文件,非常重要的。)
这里请注意签名文件的命名,不能与该目录(将要保存到的目录)中已存在的文件重名,无法覆盖的,否则无法下一步。
按Next后,出现如下图所示的提示框:按照自己的实际情况和需求,填写相关信息后。选择导出APK文件的路径,点击Finish完成。
这样,就可以轻松的打包并签名自己的APP啦!
关于签名文件的作用,以及如何保护自己APP版权,如何升级自己的APP,如何将自己的APP上传到各大市场提供下载

APK文件的组成部分及apk打包流程是Android开发中的基础知识点,做一个简单的记录。

apk文件是Android应用包文件格式,其本质是一个压缩文件。将apk文件拖动到Android Studio中即可查看里面的内容,如下图:

从上图中可以看到apk包里的几个重要组成部分:

打包流程的经典流程图如下:

其中七个椭圆形内容对应了打包流程中的七个重要步骤,也对应着打包中的七个重要工具,具体如下:

对上面七个重要的打包流程进一步说明。

aapt打包资源文件,生成Rjava文件,resourcesarsc等文件。

aapt在打包资源文件之前会检测 AndroidManifestxml 文件的合法性,对res目录下的资源目录进行扫描合法性,因此资源命名有问题时会在编译阶段就会直接报错。

需要注意的是xml文件会被编译为二进制的,因此我们并不能直接打开apk包中的xml文件。

AIDL是Android接口定义语言,是Android进程间通讯的一种实现方式。

此步骤中会对aidl文件进行处理,生成java文件。

通过javaCompiler对java文件进行编译,生成class文件。

dx工具将class文件转变为Android系统Dalvik虚拟机可执行的Dex文件。

将classesdex,res文件夹等所有文件打包成apk文件。

生成APK包之后还需要进行签名处理,Release签名需要我们自己去进行配置。

常用的签名方式有两种:jarsigner和apksigner。

Zipalign是Android平台上APK文件对齐的整理工具,能够对APK中未压缩的数据进行4字节对齐。

需要注意的是根据采用签名方式的不同,对齐处理的先后顺序有所区别。

APK打包流程备忘。

分析如下:

android程序安装后存储的目录介绍:

1、android应用安装涉及到如下几个目录

①system/app 这系统自带的应用程序,无法删除

②data/app 用户程序安装的目录,有删除权限。

③data/data 存放应用程序的数据

④Data/dalvik-cache 将apk中的dex文件安装到dalvik-cache目录下

2、安装过程介绍:

复制APK安装包到data/app目录下,解压并扫描安装包,把dex文件(Dalvik字节码)保存到dalvik-cache目录,并data/data目录下创建对应的应用数据目录。

3、卸载过程介绍:

卸载过程:删除安装过程中在上述三个目录下创建的文件及目录。

扩展资料

系统运行库

Android 包含一些C/C++库,这些库能被Android系统中不同的组件使用。它们通过 Android 应用程序框架为开发者提供服务。以下是一些核心库:

系统 C 库 - 一个从BSD继承来的标准C系统函数库 Libc ), 它是专门为基于Embedded linux的设备定制的。

媒体库 - 基于PacketVideo OpenCORE;该库支持多种常用的音频、视频格式回放和录制,同时支持静态图像文件。编码格式包括MPEG4, H264, MP3, AAC, AMR, JPG, PNG 。

Surface Manager - 对显示子系统的管理,并且为多个应用程序提 供了2D和3D图层的无缝融合。

LibWebCore - 一个最新的web浏览器引擎用,支持Android浏览器和一个可嵌入的web视图。

参考资资料:百度百科-安卓系统


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12817728.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2025-08-28
下一篇2025-08-28

发表评论

登录后才能评论

评论列表(0条)

    保存