fastlane: Screengrab: `reinstall_app true` causes failure on Android >= API 25 without app installed
New Issue Checklist
- Updated fastlane to the latest version
- I have read the Contribution Guidelines
Issue Description
reinstall_app truein Screengrabfile.- Create fresh Android API 25 or 26 emulator (app is not installed).
- screengrab will fail due to IllegalArgumentException for the unknown package.
Running screengrab with emulators running API <25 works fine, but 25 and 26 fail.
The adb uninstall behavior has changed:
API <=24:
adb uninstall package.doesnt.exist
Exception occurred while dumping:
java.lang.IllegalArgumentException: Unknown package: package.doesnt.exist
at com.android.server.pm.Settings.isOrphaned(Settings.java:4134)
at com.android.server.pm.PackageManagerService.isOrphaned(PackageManagerService.java:18105)
at com.android.server.pm.PackageManagerService.deletePackage(PackageManagerService.java:15522)
at com.android.server.pm.PackageInstallerService.uninstall(PackageInstallerService.java:888)
at com.android.server.pm.PackageManagerShellCommand.runUninstall(PackageManagerShellCommand.java:792)
at com.android.server.pm.PackageManagerShellCommand.onCommand(PackageManagerShellCommand.java:118)
at android.os.ShellCommand.exec(ShellCommand.java:94)
at com.android.server.pm.PackageManagerService.onShellCommand(PackageManagerService.java:18363)
at android.os.Binder.shellCommand(Binder.java:468)
at android.os.Binder.onTransact(Binder.java:367)
at android.content.pm.IPackageManager$Stub.onTransact(IPackageManager.java:2387)
at com.android.server.pm.PackageManagerService.onTransact(PackageManagerService.java:3031)
at android.os.Binder.execTransact(Binder.java:565)
API 25/26:
adb uninstall package.doesnt.exist
Failure [DELETE_FAILED_INTERNAL_ERROR]
The IllegalArgumentException and error response is an Android issue, but screengrab needs to handle it. Either first checking if the package is installed, or allowing the command to fail.
Complete output when running fastlane, including the stack trace and command used
You can use:
--capture_outputas the last commandline argument to get that collected for you
[12:38:33]: Validating app APK
[12:38:33]: $ /Users/user/Library/Android/sdk/build-tools/26.0.0/aapt dump permissions app/build/outputs/apk/app-screenshot-debug.apk
[12:38:33]: ▸ package: com.package.screens
[12:38:33]: ▸ uses-permission: name='android.permission.DISABLE_KEYGUARD'
[12:38:33]: ▸ uses-permission: name='android.permission.WAKE_LOCK'
[12:38:33]: ▸ uses-permission: name='android.permission.WRITE_EXTERNAL_STORAGE'
[12:38:33]: ▸ uses-permission: name='android.permission.READ_EXTERNAL_STORAGE'
[12:38:33]: ▸ uses-permission: name='android.permission.CHANGE_CONFIGURATION'
[12:38:33]: ▸ uses-permission: name='android.permission.BLUETOOTH_ADMIN'
[12:38:33]: ▸ uses-permission: name='android.permission.INTERNET'
[12:38:33]: ▸ uses-permission: name='android.permission.ACCESS_NETWORK_STATE'
[12:38:33]: ▸ uses-permission: name='android.permission.BLUETOOTH'
[12:38:33]: ▸ uses-permission: name='android.permission.RECEIVE_BOOT_COMPLETED'
[12:38:33]: ▸ uses-permission: name='com.google.android.c2dm.permission.RECEIVE'
[12:38:33]: ▸ permission: com.package.screens.permission.C2D_MESSAGE
[12:38:33]: ▸ uses-permission: name='com.package.screens.permission.C2D_MESSAGE'
[12:38:33]: ▸ uses-permission: name='android.permission.ACCESS_COARSE_LOCATION'
[12:38:33]: ▸ uses-permission: name='android.permission.ACCESS_FINE_LOCATION'
[12:38:33]: Uninstalling app APK
[12:38:33]: $ adb -s emulator-5556 uninstall com.package.screens
[12:38:34]: ▸ Exception occurred while executing:
[12:38:34]: ▸ java.lang.IllegalArgumentException: Unknown package: com.package.screens
[12:38:34]: ▸ at com.android.server.pm.Settings.isOrphaned(Settings.java:4400)
[12:38:34]: ▸ at com.android.server.pm.PackageManagerService.isOrphaned(PackageManagerService.java:20603)
[12:38:34]: ▸ at com.android.server.pm.PackageManagerService.deletePackageVersioned(PackageManagerService.java:17759)
[12:38:34]: ▸ at com.android.server.pm.PackageInstallerService.uninstall(PackageInstallerService.java:896)
[12:38:34]: ▸ at com.android.server.pm.PackageManagerShellCommand.runUninstall(PackageManagerShellCommand.java:912)
[12:38:34]: ▸ at com.android.server.pm.PackageManagerShellCommand.onCommand(PackageManagerShellCommand.java:134)
[12:38:34]: ▸ at android.os.ShellCommand.exec(ShellCommand.java:96)
[12:38:34]: ▸ at com.android.server.pm.PackageManagerService.onShellCommand(PackageManagerService.java:20893)
[12:38:34]: ▸ at android.os.Binder.shellCommand(Binder.java:573)
[12:38:34]: ▸ at android.os.Binder.onTransact(Binder.java:473)
[12:38:34]: ▸ at android.content.pm.IPackageManager$Stub.onTransact(IPackageManager.java:2638)
[12:38:34]: ▸ at com.android.server.pm.PackageManagerService.onTransact(PackageManagerService.java:3466)
[12:38:34]: ▸ at android.os.Binder.execTransact(Binder.java:674)
Exception occurred while executing:
java.lang.IllegalArgumentException: Unknown package: com.package.screens
at com.android.server.pm.Settings.isOrphaned(Settings.java:4400)
at com.android.server.pm.PackageManagerService.isOrphaned(PackageManagerService.java:20603)
at com.android.server.pm.PackageManagerService.deletePackageVersioned(PackageManagerService.java:17759)
at com.android.server.pm.PackageInstallerService.uninstall(PackageInstallerService.java:896)
at com.android.server.pm.PackageManagerShellCommand.runUninstall(PackageManagerShellCommand.java:912)
at com.android.server.pm.PackageManagerShellCommand.onCommand(PackageManagerShellCommand.java:134)
at android.os.ShellCommand.exec(ShellCommand.java:96)
at com.android.server.pm.PackageManagerService.onShellCommand(PackageManagerService.java:20893)
at android.os.Binder.shellCommand(Binder.java:573)
at android.os.Binder.onTransact(Binder.java:473)
at android.content.pm.IPackageManager$Stub.onTransact(IPackageManager.java:2638)
at com.android.server.pm.PackageManagerService.onTransact(PackageManagerService.java:3466)
at android.os.Binder.execTransact(Binder.java:674)
[12:38:34]: Exit status: 255
[!] Exit status: 255
/Library/Ruby/Gems/2.0.0/gems/fastlane-2.47.0/fastlane_core/lib/fastlane_core/ui/interface.rb:143:in `shell_error!'
/Library/Ruby/Gems/2.0.0/gems/fastlane-2.47.0/fastlane_core/lib/fastlane_core/ui/ui.rb:14:in `method_missing'
/Library/Ruby/Gems/2.0.0/gems/fastlane-2.47.0/fastlane/lib/fastlane/helper/sh_helper.rb:56:in `sh_control_output'
/Library/Ruby/Gems/2.0.0/gems/fastlane-2.47.0/fastlane/lib/fastlane/action.rb:98:in `sh'
/Library/Ruby/Gems/2.0.0/gems/fastlane-plugin-automated_test_emulator_run-1.5.1/lib/fastlane/plugin/automated_test_emulator_run/actions/automated_test_emulator_run_action.rb:178:in `run'
/Library/Ruby/Gems/2.0.0/gems/fastlane-2.47.0/fastlane/lib/fastlane/runner.rb:252:in `block (2 levels) in execute_action'
/Library/Ruby/Gems/2.0.0/gems/fastlane-2.47.0/fastlane/lib/fastlane/actions/actions_helper.rb:50:in `execute_action'
/Library/Ruby/Gems/2.0.0/gems/fastlane-2.47.0/fastlane/lib/fastlane/runner.rb:230:in `block in execute_action'
/Library/Ruby/Gems/2.0.0/gems/fastlane-2.47.0/fastlane/lib/fastlane/runner.rb:226:in `chdir'
/Library/Ruby/Gems/2.0.0/gems/fastlane-2.47.0/fastlane/lib/fastlane/runner.rb:226:in `execute_action'
/Library/Ruby/Gems/2.0.0/gems/fastlane-2.47.0/fastlane/lib/fastlane/runner.rb:148:in `trigger_action_by_name'
/Library/Ruby/Gems/2.0.0/gems/fastlane-2.47.0/fastlane/lib/fastlane/fast_file.rb:146:in `method_missing'
Fastfile:47:in `block (2 levels) in parsing_binding'
/Library/Ruby/Gems/2.0.0/gems/fastlane-2.47.0/fastlane/lib/fastlane/lane.rb:33:in `call'
/Library/Ruby/Gems/2.0.0/gems/fastlane-2.47.0/fastlane/lib/fastlane/lane.rb:33:in `call'
/Library/Ruby/Gems/2.0.0/gems/fastlane-2.47.0/fastlane/lib/fastlane/runner.rb:49:in `block in execute'
/Library/Ruby/Gems/2.0.0/gems/fastlane-2.47.0/fastlane/lib/fastlane/runner.rb:45:in `chdir'
/Library/Ruby/Gems/2.0.0/gems/fastlane-2.47.0/fastlane/lib/fastlane/runner.rb:45:in `execute'
/Library/Ruby/Gems/2.0.0/gems/fastlane-2.47.0/fastlane/lib/fastlane/lane_manager.rb:52:in `cruise_lane'
/Library/Ruby/Gems/2.0.0/gems/fastlane-2.47.0/fastlane/lib/fastlane/command_line_handler.rb:30:in `handle'
/Library/Ruby/Gems/2.0.0/gems/fastlane-2.47.0/fastlane/lib/fastlane/commands_generator.rb:104:in `block (2 levels) in run'
/Library/Ruby/Gems/2.0.0/gems/commander-fastlane-4.4.5/lib/commander/command.rb:178:in `call'
/Library/Ruby/Gems/2.0.0/gems/commander-fastlane-4.4.5/lib/commander/command.rb:178:in `call'
/Library/Ruby/Gems/2.0.0/gems/commander-fastlane-4.4.5/lib/commander/command.rb:153:in `run'
/Library/Ruby/Gems/2.0.0/gems/commander-fastlane-4.4.5/lib/commander/runner.rb:476:in `run_active_command'
/Library/Ruby/Gems/2.0.0/gems/fastlane-2.47.0/fastlane_core/lib/fastlane_core/ui/fastlane_runner.rb:64:in `run!'
/Library/Ruby/Gems/2.0.0/gems/commander-fastlane-4.4.5/lib/commander/delegates.rb:15:in `run!'
/Library/Ruby/Gems/2.0.0/gems/fastlane-2.47.0/fastlane/lib/fastlane/commands_generator.rb:303:in `run'
/Library/Ruby/Gems/2.0.0/gems/fastlane-2.47.0/fastlane/lib/fastlane/commands_generator.rb:42:in `start'
/Library/Ruby/Gems/2.0.0/gems/fastlane-2.47.0/fastlane/lib/fastlane/cli_tools_distributor.rb:66:in `take_off'
/Library/Ruby/Gems/2.0.0/gems/fastlane-2.47.0/bin/fastlane:20:in `<top (required)>'
/usr/local/bin/fastlane:23:in `load'
/usr/local/bin/fastlane:23:in `<top (required)>'
Environment
Please run fastlane env and copy the output below. This will help us help you 👍
If you used --capture_output option please remove this block - as it is already included there.
🚫 fastlane environment 🚫
Stack
| Key | Value |
|---|---|
| OS | 10.12.5 |
| Ruby | 2.0.0 |
| Bundler? | false |
| Git | git version 2.11.0 (Apple Git-81) |
| Installation Source | /usr/local/bin/fastlane |
| Host | Mac OS X 10.12.5 (16F73) |
| Ruby Lib Dir | /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib |
| OpenSSL Version | OpenSSL 0.9.8zc 19 Mar 2015 |
| Is contained | false |
| Is homebrew | false |
| Is installed via Fabric.app | false |
| Xcode Path | /Library/Developer/CommandLineTools/ |
fastlane gems
| Gem | Version | Update-Status |
|---|---|---|
| fastlane | 2.47.0 | ✅ Up-To-Date |
Loaded fastlane plugins:
| Plugin | Version | Update-Status |
|---|---|---|
| fastlane-plugin-automated_test_emulator_run | 1.5.1 | ✅ Up-To-Date |
About this issue
- Original URL
- State: closed
- Created 7 years ago
- Comments: 41 (24 by maintainers)
Commits related to this issue
- fix(#9825): Add check to determine if package is already installed before uninstalling to prevent error on later versions of Android. — committed to joeboyscout04/fastlane by deleted user 6 years ago
- [screengrab] check if package is already installed before uninstalling (#13656) …to prevent error on later versions of Android. <!-- Thanks for contributing to _fastlane_! Before you submit your p... — committed to fastlane/fastlane by joeboyscout04 5 years ago
- [screengrab] check if package is already installed before uninstalling (#13656) …to prevent error on later versions of Android. <!-- Thanks for contributing to _fastlane_! Before you submit your p... — committed to minuscorp/fastlane by joeboyscout04 5 years ago
Blah blah, still an issue.
Hey guys I also ran into this issue, thought I’d just submit the PR here to hopefully get this one fixed. Cheers!
Same
There hasn’t been any activity on this issue recently. Due to the high number of incoming GitHub notifications, we have to clean some of the old issues, as many of them have already been resolved with the latest updates.
Please make sure to update to the latest
fastlaneversion and check if that solves the issue. Let us know if that works for you by adding a comment 👍I’m doing this manually for now. I might submit a PR if I can find time
I don’t even know why the
fastlane-botis questioning this issue since there’s atype: buglabel on it and it hasn’t been closed.Also happens on API level 27. I already checked the sources and I could not find a good way to easily change it since I’m not that familiar with the project + ruby.
This seems to be the code responsible for uninstalling apks. It doesn’t appear to do anything special to handle errors / nonexistent apps. https://github.com/fastlane/fastlane/blob/ae5db88ff7a3ebc3c564f725f76758c83ccb7973/screengrab/lib/screengrab/runner.rb#L189-L199
This could probably be fixed by using
adb shell pm path ...to check for the app, exit 0=exists, exit 1=doesn’t exist.This issue still persists.