原理:
查看了下安卓源码,明白了解析过程,只是自己的话就要移植安卓的源码,有人解析成功了,但是我觉得太麻烦。
大概说下安卓的解析过程吧。
public PackageInfo getPackageArchiveInfo(String archiveFilePath, int flags) {
PackageParser packageParser = new PackageParser(archiveFilePath);
DisplayMetrics metrics = new DisplayMetrics();
metrics.setToDefaults();
final File sourceFile = new File(archiveFilePath);
PackageParser.Package pkg = packageParser.parsePackage(
sourceFile, archiveFilePath, metrics, 0);
if (pkg == null) {
return null;
}
if ((flags & GET_SIGNATURES) != 0) {
packageParser.collectCertificates(pkg, 0);
}
return PackageParser.generatePackageInfo(pkg, null, flags, 0, 0);
}
这里是源码,首先通过PackageParser解析,然后通过PackageParser.generatePackageInfo返回PackageInfo