在 Android 中通过 ADB 在工作配置文件中安装 APK

Sum*_*hoo 12 android adb android-for-work

假设我们在 Android 设备中启用了工作配置文件 (Android For Work)。有谁知道如何在工作资料而不是个人资料中通过 ADB 安装 APK。

我看过 ADB 文档,有一种方法可以获取用户 ID,但使用相同的 ID 我无法安装 APK。

获取 ID:adb shell pm list users 安装命令:adb install -r --user 12 app_name.apk

错误信息 :

Performing Streamed Install
adb: failed to install app-prodDebug.apk: Security exception: Shell does not have permission to access user 12
 com.android.server.am.ActivityManagerService.handleIncomingUser:22541 android.app.ActivityManager.handleIncomingUser:3989 com.android.server.pm.PackageManagerShellCommand.translateUserId:2434

java.lang.SecurityException: Shell does not have permission to access user 12
 com.android.server.am.ActivityManagerService.handleIncomingUser:22541 android.app.ActivityManager.handleIncomingUser:3989 com.android.server.pm.PackageManagerShellComma
Run Code Online (Sandbox Code Playgroud)

有什么办法可以解决这个问题?我的用例是替换启用了调试选项的应用程序,以便我可以对安装在工作配置文件中的特定应用程序发生的任何问题进行故障排除。

jtm*_*ole 8

adb push android.apk /data/local/tmp
adb shell pm install --user 12 /data/local/tmp/android.apk
Run Code Online (Sandbox Code Playgroud)

  • 说成功但没有看到应用程序 (5认同)
  • 不起作用。我在问题中得到了相同的 SecurityException 。 (4认同)
  • 获取用户 ID `adb shell pm list users` (3认同)

vij*_*007 5

  • 来自 @jtmcodele 的上述解决方案工作正常。

  • 但要查找用户 ID,请使用以下命令

  • adb shell dumpsys user

  • 在我的例子中,上面的命令给出了以下输出

  • UserInfo{11:10100030} serialNo=11

  • 所以我运行下面的命令使其工作

  • adb shell pm install --user 12 /data/local/tmp/android.apk

  • 我猜您以用户身份指定了“11”,这给了我一个错误“android.os.ParcelableException:java.io.IOException:不是批准的安装程序”。 (3认同)