安装应用程序后Android如何解析清单文件?

时间:2011-12-24 04:35:06

标签: android parsing android-manifest

有人可以与我分享Android操作系统在新下载的APK中为其捆绑的AndroidManifest文件执行的步骤吗? 实际上我很想知道Android OS在下载之后和确认安装成功之前做了什么。它如何读取AndroidManifest以及它的序列是什么......?

2 个答案:

答案 0 :(得分:1)

安装时间解析

PackageManager是一个系统组件,可在Android设备上运行(位于system_server中),并且在安装过程中起着关键作用,它是与解析AndroidManifest.xml文件有关的组件所安装的软件包。

精确地在PackageParser.java中进行了解析。

更新

尽管在Android R PackageParser.java上仍然保留并包含用于解析的代码,但实际上已“弃用”了该代码,而推荐使用ParsingPackageUtils.java

构建时间解析

构建Android软件包文件(AndroidManifest.xml)时,还会对.apk进行另一次解析。当aapt2 (Android Asset Packaging Tool)链接已编译的资源文件时,它也会获取,解析和验证AndroidManifest.xml文件。这发生在ManifestFixer.cpp中。执行AndroidManifest.xml.apk时,它还会解析从aapt2 dump badging文件中提取的aapt2 dump permissions-DumpManifest.cpp

答案 1 :(得分:0)

实际上你可以在android源代码中找到更多:

$ find sdk/sdkmanager/* -name "*Manifest*.java"
sdk/sdkmanager/libs/sdklib/src/com/android/sdklib/xml/AndroidManifest.java
sdk/sdkmanager/libs/sdklib/src/com/android/sdklib/xml/ManifestData.java
sdk/sdkmanager/libs/sdklib/src/com/android/sdklib/xml/AndroidManifestParser.java
sdk/sdkmanager/libs/sdklib/tests/com/android/sdklib/xml/AndroidManifestParserTest.java

ManifestData.java非常重要,并且扮演着重要的角色,建议您进一步阅读。

附录:此目录有四个java源代码:

$ ls sdk/sdkmanager/libs/sdklib/src/com/android/sdklib/xml/
AndroidManifest.java        AndroidXPathFactory.java
AndroidManifestParser.java  ManifestData.java