From 688b46e3b17b639aabef8fdf97aafbd6a93ec308 Mon Sep 17 00:00:00 2001 From: Jackal Guo Date: Fri, 2 Dec 2022 16:59:50 +0800 Subject: [PATCH] Add adb command for requesting update ownership (3/n) Bug: 244413073 Test: build Change-Id: Id35dc55122e4dfbad0d48f36b6c07ef7d0fddd5b --- packages/Shell/AndroidManifest.xml | 1 + .../server/pm/PackageManagerShellCommand.java | 12 +++++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/packages/Shell/AndroidManifest.xml b/packages/Shell/AndroidManifest.xml index d56300e6781ab..d716b327f94d0 100644 --- a/packages/Shell/AndroidManifest.xml +++ b/packages/Shell/AndroidManifest.xml @@ -170,6 +170,7 @@ + diff --git a/services/core/java/com/android/server/pm/PackageManagerShellCommand.java b/services/core/java/com/android/server/pm/PackageManagerShellCommand.java index 0709502dd2b00..f1168f5ec2726 100644 --- a/services/core/java/com/android/server/pm/PackageManagerShellCommand.java +++ b/services/core/java/com/android/server/pm/PackageManagerShellCommand.java @@ -3211,6 +3211,15 @@ class PackageManagerShellCommand extends ShellCommand { case "--install-reason": sessionParams.installReason = Integer.parseInt(getNextArg()); break; + case "--update-ownership": + if (params.installerPackageName == null) { + // Enabling update ownership enforcement needs an installer. Since the + // default installer is null when using adb install, that effectively + // disable this enforcement. + params.installerPackageName = "com.android.shell"; + } + sessionParams.installFlags |= PackageManager.INSTALL_REQUEST_UPDATE_OWNERSHIP; + break; case "--force-uuid": sessionParams.installFlags |= PackageManager.INSTALL_FORCE_VOLUME_UUID; sessionParams.volumeUuid = getNextArg(); @@ -4099,6 +4108,7 @@ class PackageManagerShellCommand extends ShellCommand { pw.println(" --install-reason: indicates why the app is being installed:"); pw.println(" 0=unknown, 1=admin policy, 2=device restore,"); pw.println(" 3=device setup, 4=user request"); + pw.println(" --update-ownership: request the update ownership enforcement"); pw.println(" --force-uuid: force install on to disk volume with given UUID"); pw.println(" --apex: install an .apex file, not an .apk"); pw.println(" --staged-ready-timeout: By default, staged sessions wait " @@ -4122,7 +4132,7 @@ class PackageManagerShellCommand extends ShellCommand { pw.println(" [--referrer URI] [--abi ABI_NAME] [--force-sdk]"); pw.println(" [--preload] [--instant] [--full] [--dont-kill]"); pw.println(" [--force-uuid internal|UUID] [--pkg PACKAGE] [--apex] [-S BYTES]"); - pw.println(" [--multi-package] [--staged]"); + pw.println(" [--multi-package] [--staged] [--update-ownership]"); pw.println(" Like \"install\", but starts an install session. Use \"install-write\""); pw.println(" to push data into the session, and \"install-commit\" to finish."); pw.println("");