文章目录
- APK的定义
- 解析APK
- APK 是什么
- 每个文件的意义
- classes.dex
- AndroidManifest.xml
- assets
- lib
- res & resources.arsc
- 反编译工具
- apktool
- apk解包 秒了~
APK的定义
APK(Android Package Kit)是用于部署和分发Android操作系统上应用程序的软件包格式。APK文件实际上是一个压缩文件,它包含了应用程序的所有代码、资源、以及一些必要的元数据,如应用程序的版本信息、权限请求等。
解析APK
随便在一个应用商店中下载一个APK。
APK 是什么
APK文件通常是一个压缩包,使用.zip格式,但扩展名被改为.apk。
现在将他后缀改为 zip 或者 rar,再解压后看。(一般解出来之后会很大,准备好足够的内存)
每个文件的意义
classes.dex
编译后的代码。
在Android应用开发中,classes.dex 文件是应用程序的Dalvik字节码文件。Dalvik是Android平台的虚拟机,它执行Dalvik字节码。这个文件包含了应用程序的Java代码在编译后生成的中间表示形式,它允许Android操作系统在Dalvik虚拟机上运行这些代码。
AndroidManifest.xml
重要配置文件,APP启动入口,界面信息等等
AndroidManifest.xml 是一个非常重要的配置文件,它在Android应用开发中扮演着核心角色。这个文件包含了应用程序的所有必要信息和定义,是每个Android应用程序都必须拥有的。
assets
资源目录,没被编译
assets 文件夹是一个特殊的目录,用于存放那些不会被Android系统直接识别为资源(如图片、布局文件等)的任意文件。
内容类型:
-
原始数据文件:包括配置文件、数据文件、脚本等。
-
二进制文件:如自定义字库文件、二进制格式的数据文件等。
-
文本文件:如HTML、CSS、JavaScript文件,这些可以用于在应用内显示网页内容。
-
图片和音频文件:尽管这些通常放在res目录下,但也可以通过assets目录来包含。
-
其他资源文件:任何不希望自动生成资源ID的文件。
lib
里面有许多so文件,就是由java代码编译过来的。
在Android应用开发中,lib 目录通常指的是库(library)目录,它包含应用程序所依赖的第三方库或原生库(如C或C++编写的库)。这些库文件对于构建和运行应用程序是必需的。
res & resources.arsc
res 资源目录,被编译了
resources.arsc 资源文件索引
-
res(resource的缩写)目录是一个特殊的目录,它包含了应用程序的所有资源文件。这些资源文件用于定义用户界面元素、本地化字符串、图形和多媒体文件等。res目录下的文件在编译时会被编译进最终的APK包中。
-
resources.arsc 文件是Android应用编译过程中生成的,它是一个二进制文件,包含了所有的资源索引和配置信息。这个文件是APK包的一部分,由Android操作系统在运行时使用。
反编译工具
既然手动能解包了,为什么还要工具?
因为现在看样子是打开了,但是很多文件不是经过专业的解包,是打不开的,例如AndroidManifest.xml文件。
下面介绍一款工具。
apktool
解包工具网站
反编译包:
apktool d test.apk
重打包成apk:
apktool b test
优点:可以重打包apk
缺点:只能使用命令,没有可视化操作界面,不方便分析代码,反编译(打包)近一两年
的apk,很容易报错
apk解包 秒了~
下课!!!