Decouple Android support from the emulator
- Dominant language
- Python
- Stars
- 3.3k
- Forks
- 549
- Avg merge
- 1d 4h
- Merged PRs (30d)
- 40
Description
### Describe the bug
Currently, Briefcase requires the Android SDK to contain an operational emulator; however, it would be reasonable to run Briefcase without an emulator and test only on a physical device. Additionally, the emulator isn't supported on all platforms....and it runs terribly on slow machines anyway....or machines that are already being virtualized.
As discussed in #1366, Briefcase does invoke `sdkmanager` to download `build-tools`...and it has a dependency on emulator. Ideally, it's possible to remove this dependency somehow....but it's also possible to fake an installed emulator so `sdkmanager` doesn't try to install it.
### Steps to reproduce
Run `briefcase run android` without an operational emulator. Since Briefcase tries to enumerate the available AVDs with the emulator, it will error out during this process.
### Expected behavior
Ignore Android emulator functionality if the emulator is not available.
### Screenshots
_No response_
### Environment
- Operating System: pop os 22.04
- Python version: 3.11.4
- Software versions:
- Briefcase: `0.3.16.dev58+g5483fd9a`
### Logs
_No response_
### Additional context
_No response_
Contributor guide
Research direction
Start from the `briefcase run android` entry point and trace how Briefcase invokes `sdkmanager` and enumerates AVDs through the emulator. Check the dependency described in #1366 and determine how a missing or non-operational emulator should be handled. Done means running against a physical device without an emulator no longer errors during setup.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- android, python
- Domain
- build-system, mobile
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 42/100