繁体   English   中英

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

[英]Install APK in Work Profile via ADB in Android

假设我们在 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

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

adb push android.apk /data/local/tmp
adb shell pm install --user 12 /data/local/tmp/android.apk
  • 以上来自@jtmcodele 的解决方案工作正常。

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

  • adb shell dumpsys user

  • 在我的情况下,上面的命令给出了以下输出

  • UserInfo{11:10100030} serialNo=11

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

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

如果接受的答案 ( https://stackoverflow.com/a/59148545/1667216 ) 不起作用,请在运行这两个步骤之前从 DPC 调用以下命令:

devicePolicyManager.clearUserRestriction(componentName,UserManager.DISALLOW_DEBUGGING_FEATURES

其中“componentName”是扩展 DeviceAdminReceiver 的类的 ComponentName。

根据 Android 开发者网站,如果您使用adb命令通过 usb 安装应用程序,它将安装在两个配置文件中:

Android 开发者网站

如果您通过 USB 电缆手动将应用程序安装到具有工作配置文件的设备上,则该应用程序将同时安装在个人和工作配置文件上。 安装应用程序后,您可以在以下条件下测试应用程序:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM