From 58bfae414ec280fab0eac11d98d9ffd62abbceae Mon Sep 17 00:00:00 2001 From: Alex Klyubin Date: Tue, 3 Jan 2017 16:25:33 -0800 Subject: [PATCH] Propagate ephemeral flag from adb install to PackageParser This fixes the bug where adb install --ephemeral switch was not propagated to PackageParser.collectCertificates. Bug: 34060793 Test: Modified PackageParser.collectCertificates to print received flags, invoked adb install with and without --ephemeral Change-Id: I562008e4275f7a40fd923022d80e2b42f6dc6e6f --- .../com/android/server/pm/PackageInstallerSession.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/services/core/java/com/android/server/pm/PackageInstallerSession.java b/services/core/java/com/android/server/pm/PackageInstallerSession.java index c85e1d8a074f1..d1aed3e3018ab 100644 --- a/services/core/java/com/android/server/pm/PackageInstallerSession.java +++ b/services/core/java/com/android/server/pm/PackageInstallerSession.java @@ -703,8 +703,11 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { for (File addedFile : addedFiles) { final ApkLite apk; try { - apk = PackageParser.parseApkLite( - addedFile, PackageParser.PARSE_COLLECT_CERTIFICATES); + int flags = PackageParser.PARSE_COLLECT_CERTIFICATES; + if ((params.installFlags & PackageManager.INSTALL_EPHEMERAL) != 0) { + flags |= PackageParser.PARSE_IS_EPHEMERAL; + } + apk = PackageParser.parseApkLite(addedFile, flags); } catch (PackageParserException e) { throw PackageManagerException.from(e); }