安卓应用反编译(一)-APK包的结构

第1节 APK包的结构

Android应用存在的实体形式是一个后缀为apk的安装包,例如“微信.apk” “QQ.apk”。将这个安装包放入到Android系统后,系统就可以启动运行它了。

apk安装包实际上是一个zip压缩包。我们用解压软件可以将它解压,解压后可以看到如下图的文件结构和目录结构。

1.1 classes.dex

classes.dex就是程序中java文件被编译后生成的字节码。字节码可以在Android系统的虚拟机(VM)运行。我们说的运行一个安卓程序,其实就是运行这个程序的字节码。

1.2 res

res中存放的的这个应用会使用到的资源文件,例如字符串、图片、界面布局等等。它的目录结构与Android Studio中我们看到的项目工程的res目录一样。这里面的xml文件内容都是被编译器编译过的,实际它们上已经变成了二进制文件,不再是文本文件了。

1.3 assets

asset目录下存放的是不会被编译器处理的文件,一般是一些资源性质的文件,这些文件放进去是什么样,被打包后还是什么样。需要注意的是,asset目录和res目录都可以存放资源,只是前者不被编译器处理,后者会被编译器再转化一次。

1.4 AndroidManifest

AndroidManifest.xml也是被编译器处理过的文件,也是二进制文件,不再是文本文件。

1.5. libs目录

libs目录下存放的是APK使用的库文件--so文件。so文件是c++或者c语言编写后通过编译器生成的。有的应用会使用到so文件,例如微信。使用so文件的应用会通过java,调用c++语言实现的功能。我们暂时把目光投放在纯Java开发应用上,以后再来讲解Java调用c++开发的方式。

因为不是所有的APK都会使用库文件。所以不会有libs目录。

1.6 resources.arsc

resources.arsc文件,用来描述那些具有ID值的资源的配置信息,它的内容就相当于是一个资源索引表。


/*******************************************************************/
* 版权声明
* 本教程只在CSDN安豆网发布,其他网站出现本教程均属侵权。

*另外,我们还推出了Arduino智能硬件相关的教程,您可以在我们的网店跟我学Arduino编程中购买相关硬件。同时也感谢大家对我们这些码农的支持。

*最后再次感谢各位读者对安豆的支持,谢谢:)
/*******************************************************************/

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值