Andriod APK 文件结构详解

APK实际上是一个zip压缩包,包含AndroidManifest.xml、META-INF、classes.dex、res和resources.arsc等核心组件。AndroidManifest.xml描述应用信息,META-INF包含签名信息,classes.dex存储Java字节码,res目录存储资源文件,resources.arsc是二进制资源文件,用于本地化和汉化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

APK文件结构

       APK文件实际是一个zip压缩包,可以通过解压缩工具解开。

     下面是用解压缩工具解开的APK包的结构:

|-- AndroidManifest.xml

|-- META-INF

| |-- CERT.RSA

| |-- CERT.SF

| `-- MANIFEST.MF

|-- classes.dex

|-- res

| |-- drawable

| | `-- icon.png

| `-- layout

| `-- main.xml

`-- resources.arsc


Manifest文件

AndroidManifest.xml是每个应用都必须定义和包含的,它描述了应用的名字、版本、权限、引用的库文件等信息,如要把apk上传到Google Market上,也要对这个xml做一些配置。网上已有很多资料,在此就不多做介绍了。


在apk中的AndroidManifest.xml是经过压缩的,可以通过AXMLPrinter2工具解开,具体命令为:

java -jar AXMLPrinter2.jar AndroidManifest.xml


META-INF目录

META-INF目录下存放的是签名信息,用来保证apk包的完整性和系统的安全。

在eclipse编译生成一个apk包时,会对所有要打包的文件做一个校验计算,并把计算结果放在META-INF目录下。而在Android手机上安装apk包时,应用管理器会按照同样的算法对包里的文件做校验,如果校验结果与META-INF下的内容不一致,系统就不会安装这个apk。这就保证了apk包里的文件不能被随意替换。比如拿到一个apk包后,如果想要替换里面的一幅图片,一段代码, 或一段版权信息,想直接解压缩、替换再重新打包,基本是不可能的。如此一来就给病毒感染和恶意修改增加了难度,有助于保护系 统的安全。


classes.dex文件

classes.dex是java源码编译后生成的java字节码文件。但由于Android使用的dalvik虚拟机与标准的java虚拟机是不兼容的,dex文件与class文件相比,不论是文件结构还是opcode都不一样。


res目录

res目录存放资源文件。


resources.arsc

编译后的二进制资源文件。通常本地化、汉化资源存储在该文件文件中。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值