revert quick install
bug: 25118622
Change-Id: I61c3a1ea9015599dc45bd9e656f99f6bf8c4ec02
diff --git a/api/system-current.txt b/api/system-current.txt
index 84dbe62..f7b1ddf 100644
--- a/api/system-current.txt
+++ b/api/system-current.txt
@@ -9667,7 +9667,6 @@
method public void setAppLabel(java.lang.CharSequence);
method public void setAppPackageName(java.lang.String);
method public void setGrantedRuntimePermissions(java.lang.String[]);
- method public void setInstallFlagsQuick();
method public void setInstallLocation(int);
method public void setOriginatingUid(int);
method public void setOriginatingUri(android.net.Uri);
diff --git a/core/java/android/content/pm/PackageInstaller.java b/core/java/android/content/pm/PackageInstaller.java
index d6d395b..3283005 100644
--- a/core/java/android/content/pm/PackageInstaller.java
+++ b/core/java/android/content/pm/PackageInstaller.java
@@ -1042,12 +1042,6 @@
}
/** {@hide} */
- @SystemApi
- public void setInstallFlagsQuick() {
- installFlags |= PackageManager.INSTALL_QUICK;
- }
-
- /** {@hide} */
public void dump(IndentingPrintWriter pw) {
pw.printPair("mode", mode);
pw.printHexPair("installFlags", installFlags);
diff --git a/core/java/android/content/pm/PackageManager.java b/core/java/android/content/pm/PackageManager.java
index 3e7deb9..40bcc7e 100644
--- a/core/java/android/content/pm/PackageManager.java
+++ b/core/java/android/content/pm/PackageManager.java
@@ -457,19 +457,11 @@
/**
* Flag parameter for {@link #installPackage} to indicate that this package is
- * to be installed quickly.
- *
- * @hide
- */
- public static final int INSTALL_QUICK = 0x00000800;
-
- /**
- * Flag parameter for {@link #installPackage} to indicate that this package is
* to be installed as a lightweight "ephemeral" app.
*
* @hide
*/
- public static final int INSTALL_EPHEMERAL = 0x00001000;
+ public static final int INSTALL_EPHEMERAL = 0x00000800;
/**
* Flag parameter for
diff --git a/core/java/android/content/pm/PackageParser.java b/core/java/android/content/pm/PackageParser.java
index 019ed2b..f445cf8 100644
--- a/core/java/android/content/pm/PackageParser.java
+++ b/core/java/android/content/pm/PackageParser.java
@@ -625,9 +625,7 @@
public final static int PARSE_COLLECT_CERTIFICATES = 1<<8;
public final static int PARSE_TRUSTED_OVERLAY = 1<<9;
public final static int PARSE_ENFORCE_CODE = 1<<10;
- // TODO: fix b/25118622; remove this entirely once signature processing is quick
- public final static int PARSE_SKIP_VERIFICATION = 1<<11;
- public final static int PARSE_IS_EPHEMERAL = 1<<12;
+ public final static int PARSE_IS_EPHEMERAL = 1<<11;
private static final Comparator<String> sSplitNameComparator = new SplitNameComparator();
@@ -1060,8 +1058,7 @@
/**
* Collect certificates from all the APKs described in the given package,
- * populating {@link Package#mSignatures}.
- * <p>Depending upon the parser flags, this may also asserts that all APK
+ * populating {@link Package#mSignatures}. Also asserts that all APK
* contents are signed correctly and consistently.
*/
public void collectCertificates(Package pkg, int parseFlags) throws PackageParserException {
@@ -1084,10 +1081,8 @@
final boolean hasCode = (apkFlags & ApplicationInfo.FLAG_HAS_CODE) != 0;
final boolean requireCode = ((parseFlags & PARSE_ENFORCE_CODE) != 0) && hasCode;
final String apkPath = apkFile.getAbsolutePath();
- final boolean skipVerification = Build.IS_DEBUGGABLE
- && ((parseFlags & PARSE_SKIP_VERIFICATION) != 0);
- boolean codeFound = skipVerification;
+ boolean codeFound = false;
StrictJarFile jarFile = null;
try {
Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "strictJarFileCtor");
@@ -1106,7 +1101,7 @@
toVerify.add(manifestEntry);
// If we're parsing an untrusted package, verify all contents
- if (!skipVerification && (parseFlags & PARSE_IS_SYSTEM) == 0) {
+ if ((parseFlags & PARSE_IS_SYSTEM) == 0) {
final Iterator<ZipEntry> i = jarFile.iterator();
while (i.hasNext()) {
final ZipEntry entry = i.next();
@@ -1150,9 +1145,6 @@
for (int i=0; i < entryCerts.length; i++) {
pkg.mSigningKeys.add(entryCerts[i][0].getPublicKey());
}
- if (skipVerification) {
- break;
- }
} else {
if (!Signature.areExactMatch(pkg.mSignatures, entrySignatures)) {
throw new PackageParserException(
@@ -1218,9 +1210,7 @@
if ((flags & PARSE_COLLECT_CERTIFICATES) != 0) {
// TODO: factor signature related items out of Package object
final Package tempPkg = new Package(null);
- // TODO: fix b/25118622; pass in '0' for parse flags
- collectCertificates(tempPkg, apkFile, 0 /*apkFlags*/,
- flags & PARSE_SKIP_VERIFICATION);
+ collectCertificates(tempPkg, apkFile, 0 /*apkFlags*/, 0 /*flags*/);
signatures = tempPkg.mSignatures;
} else {
signatures = null;
diff --git a/services/core/java/com/android/server/pm/PackageInstallerSession.java b/services/core/java/com/android/server/pm/PackageInstallerSession.java
index fa0aa37..66d10b5 100644
--- a/services/core/java/com/android/server/pm/PackageInstallerSession.java
+++ b/services/core/java/com/android/server/pm/PackageInstallerSession.java
@@ -482,7 +482,6 @@
throw new PackageManagerException(INSTALL_FAILED_CONTAINER_ERROR,
"Failed to resolve stage location", e);
}
- final boolean quickInstall = (params.installFlags & PackageManager.INSTALL_QUICK) != 0;
// Verify that stage looks sane with respect to existing application.
// This currently only ensures packageName, versionCode, and certificate
@@ -490,10 +489,7 @@
validateInstallLocked();
Preconditions.checkNotNull(mPackageName);
- // TODO: fix b/25118622; don't bypass signature check
- if (!quickInstall) {
- Preconditions.checkNotNull(mSignatures);
- }
+ Preconditions.checkNotNull(mSignatures);
Preconditions.checkNotNull(mResolvedBaseFile);
if (!mPermissionsAccepted) {
@@ -603,7 +599,6 @@
* {@link PackageManagerService}.
*/
private void validateInstallLocked() throws PackageManagerException {
- final boolean quickInstall = (params.installFlags & PackageManager.INSTALL_QUICK) != 0;
mPackageName = null;
mVersionCode = -1;
mSignatures = null;
@@ -627,9 +622,7 @@
final ApkLite apk;
try {
- // TODO: fix b/25118622; always use PARSE_COLLECT_CERTIFICATES
- final int parseFlags = quickInstall ? 0 : PackageParser.PARSE_COLLECT_CERTIFICATES;
- apk = PackageParser.parseApkLite(file, parseFlags);
+ apk = PackageParser.parseApkLite(file, PackageParser.PARSE_COLLECT_CERTIFICATES);
} catch (PackageParserException e) {
throw PackageManagerException.from(e);
}
@@ -750,7 +743,6 @@
}
private void assertApkConsistent(String tag, ApkLite apk) throws PackageManagerException {
- final boolean quickInstall = (params.installFlags & PackageManager.INSTALL_QUICK) != 0;
if (!mPackageName.equals(apk.packageName)) {
throw new PackageManagerException(INSTALL_FAILED_INVALID_APK, tag + " package "
+ apk.packageName + " inconsistent with " + mPackageName);
@@ -760,8 +752,7 @@
+ " version code " + apk.versionCode + " inconsistent with "
+ mVersionCode);
}
- // TODO: fix b/25118622; don't bypass signature check
- if (!quickInstall && !Signature.areExactMatch(mSignatures, apk.signatures)) {
+ if (!Signature.areExactMatch(mSignatures, apk.signatures)) {
throw new PackageManagerException(INSTALL_FAILED_INVALID_APK,
tag + " signatures are inconsistent");
}
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java
index d64b898..4f0efbd 100644
--- a/services/core/java/com/android/server/pm/PackageManagerService.java
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
@@ -10442,10 +10442,6 @@
if (!DEFAULT_VERIFY_ENABLE) {
return false;
}
- // TODO: fix b/25118622; don't bypass verification
- if (Build.IS_DEBUGGABLE && (installFlags & PackageManager.INSTALL_QUICK) != 0) {
- return false;
- }
// Ephemeral apps don't get the full verification treatment
if ((installFlags & PackageManager.INSTALL_EPHEMERAL) != 0) {
if (DEBUG_EPHEMERAL) {
@@ -12808,7 +12804,6 @@
final boolean forwardLocked = ((installFlags & PackageManager.INSTALL_FORWARD_LOCK) != 0);
final boolean onExternal = (((installFlags & PackageManager.INSTALL_EXTERNAL) != 0)
|| (args.volumeUuid != null));
- final boolean quickInstall = ((installFlags & PackageManager.INSTALL_QUICK) != 0);
final boolean ephemeral = ((installFlags & PackageManager.INSTALL_EPHEMERAL) != 0);
boolean replace = false;
int scanFlags = SCAN_NEW_INSTALL | SCAN_UPDATE_SIGNATURE;
@@ -12834,7 +12829,6 @@
| PackageParser.PARSE_ENFORCE_CODE
| (forwardLocked ? PackageParser.PARSE_FORWARD_LOCK : 0)
| (onExternal ? PackageParser.PARSE_EXTERNAL_STORAGE : 0)
- | (quickInstall ? PackageParser.PARSE_SKIP_VERIFICATION : 0)
| (ephemeral ? PackageParser.PARSE_IS_EPHEMERAL : 0);
PackageParser pp = new PackageParser();
pp.setSeparateProcesses(mSeparateProcesses);