Loading api/system-current.txt +0 −1 Original line number Diff line number Diff line Loading @@ -9656,7 +9656,6 @@ package android.content.pm { 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); core/java/android/content/pm/PackageInstaller.java +0 −6 Original line number Diff line number Diff line Loading @@ -1041,12 +1041,6 @@ public class PackageInstaller { installFlags |= PackageManager.INSTALL_FORCE_PERMISSION_PROMPT; } /** {@hide} */ @SystemApi public void setInstallFlagsQuick() { installFlags |= PackageManager.INSTALL_QUICK; } /** {@hide} */ public void dump(IndentingPrintWriter pw) { pw.printPair("mode", mode); Loading core/java/android/content/pm/PackageManager.java +1 −9 Original line number Diff line number Diff line Loading @@ -455,21 +455,13 @@ public abstract class PackageManager { */ public static final int INSTALL_FORCE_PERMISSION_PROMPT = 0x00000400; /** * 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 Loading core/java/android/content/pm/PackageParser.java +5 −15 Original line number Diff line number Diff line Loading @@ -625,9 +625,7 @@ public class PackageParser { 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(); Loading Loading @@ -1060,8 +1058,7 @@ public class PackageParser { /** * 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 { Loading @@ -1084,10 +1081,8 @@ public class PackageParser { 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"); Loading @@ -1106,7 +1101,7 @@ public class PackageParser { 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(); Loading Loading @@ -1150,9 +1145,6 @@ public class PackageParser { 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( Loading Loading @@ -1218,9 +1210,7 @@ public class PackageParser { 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; Loading services/core/java/com/android/server/pm/PackageInstallerSession.java +3 −12 Original line number Diff line number Diff line Loading @@ -482,7 +482,6 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { 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 Loading @@ -490,10 +489,7 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { validateInstallLocked(); Preconditions.checkNotNull(mPackageName); // TODO: fix b/25118622; don't bypass signature check if (!quickInstall) { Preconditions.checkNotNull(mSignatures); } Preconditions.checkNotNull(mResolvedBaseFile); if (!mPermissionsAccepted) { Loading Loading @@ -603,7 +599,6 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { * {@link PackageManagerService}. */ private void validateInstallLocked() throws PackageManagerException { final boolean quickInstall = (params.installFlags & PackageManager.INSTALL_QUICK) != 0; mPackageName = null; mVersionCode = -1; mSignatures = null; Loading @@ -627,9 +622,7 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { 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); } Loading Loading @@ -750,7 +743,6 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { } 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); Loading @@ -760,8 +752,7 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { + " 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"); } Loading Loading
api/system-current.txt +0 −1 Original line number Diff line number Diff line Loading @@ -9656,7 +9656,6 @@ package android.content.pm { 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);
core/java/android/content/pm/PackageInstaller.java +0 −6 Original line number Diff line number Diff line Loading @@ -1041,12 +1041,6 @@ public class PackageInstaller { installFlags |= PackageManager.INSTALL_FORCE_PERMISSION_PROMPT; } /** {@hide} */ @SystemApi public void setInstallFlagsQuick() { installFlags |= PackageManager.INSTALL_QUICK; } /** {@hide} */ public void dump(IndentingPrintWriter pw) { pw.printPair("mode", mode); Loading
core/java/android/content/pm/PackageManager.java +1 −9 Original line number Diff line number Diff line Loading @@ -455,21 +455,13 @@ public abstract class PackageManager { */ public static final int INSTALL_FORCE_PERMISSION_PROMPT = 0x00000400; /** * 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 Loading
core/java/android/content/pm/PackageParser.java +5 −15 Original line number Diff line number Diff line Loading @@ -625,9 +625,7 @@ public class PackageParser { 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(); Loading Loading @@ -1060,8 +1058,7 @@ public class PackageParser { /** * 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 { Loading @@ -1084,10 +1081,8 @@ public class PackageParser { 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"); Loading @@ -1106,7 +1101,7 @@ public class PackageParser { 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(); Loading Loading @@ -1150,9 +1145,6 @@ public class PackageParser { 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( Loading Loading @@ -1218,9 +1210,7 @@ public class PackageParser { 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; Loading
services/core/java/com/android/server/pm/PackageInstallerSession.java +3 −12 Original line number Diff line number Diff line Loading @@ -482,7 +482,6 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { 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 Loading @@ -490,10 +489,7 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { validateInstallLocked(); Preconditions.checkNotNull(mPackageName); // TODO: fix b/25118622; don't bypass signature check if (!quickInstall) { Preconditions.checkNotNull(mSignatures); } Preconditions.checkNotNull(mResolvedBaseFile); if (!mPermissionsAccepted) { Loading Loading @@ -603,7 +599,6 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { * {@link PackageManagerService}. */ private void validateInstallLocked() throws PackageManagerException { final boolean quickInstall = (params.installFlags & PackageManager.INSTALL_QUICK) != 0; mPackageName = null; mVersionCode = -1; mSignatures = null; Loading @@ -627,9 +622,7 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { 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); } Loading Loading @@ -750,7 +743,6 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { } 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); Loading @@ -760,8 +752,7 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { + " 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"); } Loading