android应用用java语言编写。android sdk工具编译代码(包括任意数据以及资源文件)为apk文件:一种android包,以.apk为后缀的存档文件。一个apk文件包含android应用所有文件,也是android设备的应用安装文件

图来自Atom Kid

​ 图来自Atom Kid

apk文件作为存档文件通常包含如下内容:

AndroidManifest.xml

AndroidManifest.xml是控制文件,告诉系统对于四大高级组件(通常指activities,services,broadcast receivers,content providers)在应用中应该做什么。这个文件中包含了APP的配置信息,系统需要根据里面的内容运行APP的代码,显示界面。文件也明确需要哪些权限。这个文件以android二进制xml形式,可以转化成可读文本xml文件。

具体详情参考文章:AndroidManifest.xml详解

MEAT-INF

该文件夹包含了APK的签名文件

  • MANIFEST.MF:摘要文件,保存了Apk包下的所有文件与其签名的SHA1摘要再Base64编码的对应信息。
  • CERT.RSA:应用证书,保存公钥、加密算法等信息
  • CERT.SF:对摘要文件签名的文件,对生成的MANIFEST.MF文件进行SHA1-RSA算法对开发者的私钥进行签名。在安装时只有公共密钥才能对其解密。解密之后将其与未加密的摘要信息进行比对,如果相符则文件没有被修改。
  • INDEX.LIST:APK索引文件目录

lib

lib 该目录包含编译(.so)后的代码,具体指代处理器软件层

  1. armeabiv-v7a: 第7代及以上的 ARM 处理器,目前主流版本,大部分Android设备都使用它。
  2. arm64-v8a: 第8代、64位ARM处理器。
  3. armeabi: 第5代、第6代的ARM处理器,早期的手机用的比较多,缺少对浮点数计算的硬件支持,在需要大量计算时有性能瓶颈。
  4. x86 / x86_64: x86 架构的手机都会包含由 Intel 提供的称为 Houdini 的指令集动态转码工具,
    实现对arm .so 的兼容。
  5. mips/mips64:极少用于手机可忽略。

res

包含资源文件,还没有被编译为resources.arsc

assets

包含应用资产,可由AssetManager检索

classes.dex

编译为dex格式类文件,可以被Dalvik虚拟机识别,代码语法为SMali

resources.arsc

包含预编译资源,如二进制xml文件


转载文章(侵权联系删除):

Android应用安全系列 part 3 – android应用层基础

Android生成APK后目录中META-INF目录文件解析

AndroidManifest.xml详解


标签: none

添加新评论