1 .PackageParse类,它主要用来解析手机上的APK文件(支持Single APK和MultipleAPK),解析一个APK主要是分为两个步骤:
- 1.将APK 解析成Package:解析APK文件为Package对象的过程;
- 2.将Package 转化为 PackageInfo:由Package对象生成PackageInfo的过程;
2.解析入口函数为 parsePackageLite(File packageFile, int flags)
/**
* Parse only lightweight details about the package at the given location.
* Automatically detects if the package is a monolithic style (single APK
* file) or cluster style (directory of APKs).
* <p>
* This performs sanity checking on cluster style packages, such as
* requiring identical package name and version codes, a single base APK,
* and unique split names.
*
* @see PackageParser#parsePackage(File, int)
*/
public static PackageLite parsePackageLite(File packageFile, int flags)
throws PackageParserException {
if (packageFile.isDirectory()) {
return parseClusterPackageLite(packageFile, flags);
} else {
return parseMonolithicPackageLite(packageFile, flags);
}
}
这个函数主要判断是否是目录,如果是目录调用则调用parseMonolithicPackage(File,int)方法 , 如果不是目录则调用parseClusterPackage(File,int)