本文共 2564 字,大约阅读时间需要 8 分钟。
首先分析一波,四大组件需要在AndroidManifest文件中配置否则无法使用,类似Activity无法启动,
Activity可以被其他应用利用全类名或者action启动,就算此时要启动activity的应用没有被启动呢,
所以AndroidManifest在系统启动时或者应用安装完毕后已经被系统加载。
从系统代码级别解释就是系统启动过程中PMS会扫描特定目录下的apk进行安装,此时就会解析AndroidManifest文件。
源码解析AM.xml
PackageManagerService服务启动之后会扫描多个目录,下面存放着apk,调用scanDirLI对apk进行解析,经过一系列调用会调用到函数parseBaseApk,内部会利用XmlPullParser解析AndroidManifest文件,解析出信息会被放入Settings中,删除软件时信息会被删除,安装新的apk会重复调用scanDirLi。具体的详细过程大家可以参考源码。
拿到一个apk,利用解压文件解压apk可以看到AndroidManifest.xml文件,直接用文本文件打开会看到是乱码,
因为此时已经被编译成二进制文件,想要查看AndroidManifest文件可以利用工具AXMLPrinter2.jar
dos中:java -jar AXMLPrinter2.jar AndroidManifest.xml
微信的部分AndroidManifest.xml文件:
# 3 利用apktool 反编译apk文件
不但可以反编译出AndroidManifest.xml文件,还能得到资源文件。
转载地址:http://zspei.baihongyu.com/