Merge "Disable package verifier for staged installs."

This commit is contained in:
Dario Freni
2019-02-05 10:16:23 +00:00
committed by Android (Google) Code Review
3 changed files with 14 additions and 0 deletions

View File

@@ -866,6 +866,14 @@ public abstract class PackageManager {
*/
public static final int INSTALL_ENABLE_ROLLBACK = 0x00040000;
/**
* Flag parameter for {@link #installPackage} to indicate that package verification should be
* disabled for this package.
*
* @hide
*/
public static final int INSTALL_DISABLE_VERIFICATION = 0x00080000;
/** @hide */
@IntDef(flag = true, prefix = { "DONT_KILL_APP" }, value = {
DONT_KILL_APP

View File

@@ -13426,6 +13426,10 @@ public class PackageManagerService extends IPackageManager.Stub
return false;
}
if ((installFlags & PackageManager.INSTALL_DISABLE_VERIFICATION) != 0) {
return false;
}
boolean ensureVerifyAppsEnabled = isUserRestricted(userId, UserManager.ENSURE_VERIFY_APPS);
// Check if installing from ADB

View File

@@ -186,6 +186,7 @@ public class StagingManager {
private void preRebootVerification(@NonNull PackageInstallerSession session) {
boolean success = true;
// STOPSHIP: TODO(b/123753157): Verify APKs through Package Verifier.
if (!sessionContainsApex(session)) {
// TODO: Decide whether we want to fail fast by detecting signature mismatches for APKs,
// right away.
@@ -336,6 +337,7 @@ public class StagingManager {
PackageInstaller.SessionParams params = originalSession.params.copy();
params.isStaged = false;
params.installFlags |= PackageManager.INSTALL_DISABLE_VERIFICATION;
int apkSessionId = mPi.createSession(
params, originalSession.getInstallerPackageName(), originalSession.userId);
PackageInstallerSession apkSession = mPi.getSession(apkSessionId);