Android .apk****(概念篇):Apktool使用之前必须要掌握的知识点(划重点)
学一个工具需要两种操作(此方法也适用于学习一门新的语言):
- 点点点,点点点,点点点,点完之后知道怎么用了,为你为什么这么用,这是干嘛的,一脸懵逼。这时候的你,知道回去恶补知识点了;
- 好好学习天天向上,基础打牢温故而知新,点一下,安装完成~
目录
AndroidManifest.xml(注:程序全局配置文件)
resources.arsc(注:编译后的二进制资源文件)。
.apk文件
什么是apk文件
apk?安卓的安装包。
APK是AndroidPackage的缩写,通过将APK文件直接传到Android模拟器或Android手机中执行即可安装。
apk文件和sis一样,把android sdk编译的工程打包成一个安装程序文件,格式为apk。 APK文件其实是zip格式,但后缀名被修改为apk,通过UnZip解压后,可以看到Dex文件,Dex是DalvikVM executes的简称,即Android Dalvik执行程序,并非Java ME的字节码而是Dalvik字节码。Android在运行一个程序时首先需要UnZip,然后类似Symbian那样直接,和Windows Mobile中的PE文件有区别。
你可以随便找个apk,将apk后缀改成 zip,既可打开查看里面的内容(并非 用其他(改之理)的程序反编译。)
目录结构
META-INF\(注:Jar文件中常可以看到)
META-INF目录下存放的是签名信息,用来保证apk包的完整性和系统的安全。在eclipse编译生成一个apk包时,会对所有要打包的文件做一个校验计算,并把计算结果放在META-INF目录下。同样在Android平台安装apk时,应用管理器会对按照同样的算法对包里的文件做校验,如果校验结果与META-INF下的内容不一致,系统就不会安装这个apk。这就保证了apk包里的文件不能被随意替换。
res\(注:存放资源文件的目录)
res目录存放资源文件。
AndroidManifest.xml(注:程序全局配置文件)
AndroidManifest.xml文件是每一个应用必须定义和包含的,它描述了应用的名字、版本、权限、引用的库文件等信息。
通过 解压之后直接打开,你可以看到 编码类型,编码环境,以及乱码。其实就是 编译之后的结果。
classes.dex(注:Dalvik字节码);
classes.dex是java源码编译生成的java字节码文件。
dex文件是应用安装时生成的虚拟机可执行二进制文件,如果应用还存在,删除了下次手机开机时还会再次生成,卸载软件时会同时删除dex文件。所以没有必要手动删除dex文件。
resources.arsc(注:编译后的二进制资源文件)。
resource.arsc是编译后的二进制资源文件。
下一篇,将介绍 Apktool的具体使用。
参考文献:
百度百科 apk:https://baike.baidu.com/item/apk/10415494?fr=aladdin
Apktool(2)——使用前必须知道的apk知识:https://www.cnblogs.com/mliangchen/p/5084894.html