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