Merge "PackageParser2: collect certificates if requested" into rvc-dev am: a23a9dc83b
Change-Id: Ic5abdcbecccb9ef4fc4c68e98633e6302a06dc11
This commit is contained in:
@@ -396,8 +396,13 @@ public class ParsingPackageUtils {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pkg.setVolumeUuid(volumeUuid)
|
pkg.setVolumeUuid(volumeUuid);
|
||||||
.setSigningDetails(SigningDetails.UNKNOWN);
|
|
||||||
|
if ((flags & PackageParser.PARSE_COLLECT_CERTIFICATES) != 0) {
|
||||||
|
pkg.setSigningDetails(getSigningDetails(pkg, false));
|
||||||
|
} else {
|
||||||
|
pkg.setSigningDetails(SigningDetails.UNKNOWN);
|
||||||
|
}
|
||||||
|
|
||||||
return input.success(pkg);
|
return input.success(pkg);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
@@ -449,7 +454,7 @@ public class ParsingPackageUtils {
|
|||||||
*/
|
*/
|
||||||
private ParseResult<ParsingPackage> parseBaseApk(ParseInput input, String apkPath,
|
private ParseResult<ParsingPackage> parseBaseApk(ParseInput input, String apkPath,
|
||||||
String codePath, Resources res, XmlResourceParser parser, int flags)
|
String codePath, Resources res, XmlResourceParser parser, int flags)
|
||||||
throws XmlPullParserException, IOException {
|
throws XmlPullParserException, IOException, PackageParserException {
|
||||||
final String splitName;
|
final String splitName;
|
||||||
final String pkgName;
|
final String pkgName;
|
||||||
|
|
||||||
|
|||||||
@@ -30,9 +30,9 @@ import android.content.pm.ApplicationInfo;
|
|||||||
import android.content.pm.PackageInfo;
|
import android.content.pm.PackageInfo;
|
||||||
import android.content.pm.PackageInstaller;
|
import android.content.pm.PackageInstaller;
|
||||||
import android.content.pm.PackageManager;
|
import android.content.pm.PackageManager;
|
||||||
|
import android.content.pm.PackageParser;
|
||||||
import android.content.pm.PackageParser.PackageParserException;
|
import android.content.pm.PackageParser.PackageParserException;
|
||||||
import android.content.pm.parsing.PackageInfoWithoutStateUtils;
|
import android.content.pm.parsing.PackageInfoWithoutStateUtils;
|
||||||
import android.content.pm.parsing.ParsingPackageUtils;
|
|
||||||
import android.os.Binder;
|
import android.os.Binder;
|
||||||
import android.os.Environment;
|
import android.os.Environment;
|
||||||
import android.os.RemoteException;
|
import android.os.RemoteException;
|
||||||
@@ -50,7 +50,6 @@ import com.android.internal.util.IndentingPrintWriter;
|
|||||||
import com.android.internal.util.Preconditions;
|
import com.android.internal.util.Preconditions;
|
||||||
import com.android.server.pm.parsing.PackageParser2;
|
import com.android.server.pm.parsing.PackageParser2;
|
||||||
import com.android.server.pm.parsing.pkg.AndroidPackage;
|
import com.android.server.pm.parsing.pkg.AndroidPackage;
|
||||||
import com.android.server.pm.parsing.pkg.ParsedPackage;
|
|
||||||
import com.android.server.utils.TimingsTraceAndSlog;
|
import com.android.server.utils.TimingsTraceAndSlog;
|
||||||
|
|
||||||
import com.google.android.collect.Lists;
|
import com.google.android.collect.Lists;
|
||||||
@@ -491,7 +490,7 @@ public abstract class ApexManager {
|
|||||||
|
|
||||||
for (ApexInfo ai : allPkgs) {
|
for (ApexInfo ai : allPkgs) {
|
||||||
File apexFile = new File(ai.modulePath);
|
File apexFile = new File(ai.modulePath);
|
||||||
parallelPackageParser.submit(apexFile, 0);
|
parallelPackageParser.submit(apexFile, PackageParser.PARSE_COLLECT_CERTIFICATES);
|
||||||
parsingApexInfo.put(apexFile, ai);
|
parsingApexInfo.put(apexFile, ai);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -504,18 +503,8 @@ public abstract class ApexManager {
|
|||||||
ApexInfo ai = parsingApexInfo.get(parseResult.scanFile);
|
ApexInfo ai = parsingApexInfo.get(parseResult.scanFile);
|
||||||
|
|
||||||
if (throwable == null) {
|
if (throwable == null) {
|
||||||
// Unfortunately, ParallelPackageParser won't collect certificates for us. We
|
|
||||||
// need to manually collect them here.
|
|
||||||
ParsedPackage pp = parseResult.parsedPackage;
|
|
||||||
try {
|
|
||||||
pp.setSigningDetails(
|
|
||||||
ParsingPackageUtils.getSigningDetails(pp, false));
|
|
||||||
} catch (PackageParserException e) {
|
|
||||||
throw new IllegalStateException(
|
|
||||||
"Unable to collect certificates for " + ai.modulePath, e);
|
|
||||||
}
|
|
||||||
final PackageInfo packageInfo = PackageInfoWithoutStateUtils.generate(
|
final PackageInfo packageInfo = PackageInfoWithoutStateUtils.generate(
|
||||||
pp, ai, flags);
|
parseResult.parsedPackage, ai, flags);
|
||||||
if (packageInfo == null) {
|
if (packageInfo == null) {
|
||||||
throw new IllegalStateException("Unable to generate package info: "
|
throw new IllegalStateException("Unable to generate package info: "
|
||||||
+ ai.modulePath);
|
+ ai.modulePath);
|
||||||
|
|||||||
Reference in New Issue
Block a user