Skip to content

fix(android): list installed packages on some Samsung devices - #5713

Draft
rigor789 wants to merge 1 commit into
mainfrom
fix/android-list-installed-packages-samsung
Draft

fix(android): list installed packages on some Samsung devices#5713
rigor789 wants to merge 1 commit into
mainfrom
fix/android-list-installed-packages-samsung

Conversation

@rigor789

Copy link
Copy Markdown
Member

PR Checklist

What is the current behavior?

On some devices listing installed packages via adb shell breaks due to a permission error - and makes other parts of the CLI fail because we can't verify whether or not the app has been installed.

What is the new behavior?

In case listing the packages fails - we try an alternative (slower) method:

  • list all users
  • list all packages per user and concatenate them
  • continue with the rest of the logic...

@cla-bot cla-bot Bot added the cla: yes label Jan 20, 2023
@rigor789

rigor789 commented Feb 13, 2023

Copy link
Copy Markdown
Member Author

Update: draft state because errors are part of stderr but not caught in the catch block - need to parse command result for output like this:

./adb shell "pm list packages"

Exception occurred while executing 'list':
java.lang.安全Exception: Shell does not have permission to access user 150
 com.android.server.am.动态ManagerService.handleIncomingUser:14872 android.app.动态Manager.handleIncomingUser:4802 com.android.server.pm.PackageManagerShellCommand.translateUserId:3499
        at com.android.server.am.UserController.handleIncomingUser(UserController.java:2672)
        at com.android.server.am.动态ManagerService.handleIncomingUser(动态ManagerService.java:14872)
        at android.app.动态Manager.handleIncomingUser(动态Manager.java:4802)
        at com.android.server.pm.PackageManagerShellCommand.translateUserId(PackageManagerShellCommand.java:3499)
        at com.android.server.pm.PackageManagerShellCommand.runList包(PackageManagerShellCommand.java:965)
        at com.android.server.pm.PackageManagerShellCommand.runList包(PackageManagerShellCommand.java:861)
        at com.android.server.pm.PackageManagerShellCommand.runList(PackageManagerShellCommand.java:720)
        at com.android.server.pm.PackageManagerShellCommand.onCommand(PackageManagerShellCommand.java:222)
        at com.android.modules.utils.BasicShellCommandHandler.exec(BasicShellCommandHandler.java:97)
        at android.os.ShellCommand.exec(ShellCommand.java:38)
        at com.android.server.pm.PackageManagerService$IPackageManagerImpl.onShellCommand(PackageManagerService.java:6922)
        at android.os.Binder.shellCommand(Binder.java:1085)
        at android.os.Binder.onTransact(Binder.java:903)
        at android.content.pm.IPackageManager$Stub.onTransact(IPackageManager.java:4909)
        at com.android.server.pm.PackageManagerService$IPackageManagerImpl.onTransact(PackageManagerService.java:6906)
        at android.os.Binder.execTransactInternal(Binder.java:1321)
        at android.os.Binder.execTransact(Binder.java:1280)
Exit code is: 255

Temporary fix was to modify the android-debug-bridge -> executeCommand() function to concat stderr to output + parse/check for the specific string:

result.stdout.concat(result.stderr)

// ...

if(result.includes('Exception occurred while executing')) {
  throw result
}

@rigor789 rigor789 added this to the 8.5 milestone Mar 15, 2023
@NathanWalker NathanWalker modified the milestones: 8.5, 9.0 Oct 23, 2023
@rigor789 rigor789 removed this from the 9.0 milestone Apr 3, 2024
@neryortez

Copy link
Copy Markdown

Is there anything I can help with this one ?
I'm having the same issue, I was about to start developing this but I found your PR already

注册 for free to join this conversation on GitHub. Already have an account? 登录 to comment

标签

项目

None yet

Development

Successfully merging this pull request may close these issues.

3 participants