You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The Android toolchain currently hard-codes the system image that is used on emulator images built by Briefcase (at time of writing, the default Android-31 image is used). This system image is downloaded when the emulator binary is downloaded, and is never directly updated.
This has some unfortunate side effects:
If a user has an emulator created by a different set of tools (e.g., Android Studio), the emulator will appear in the list of available emulators, but won't be able to start
A user can't intentionally choose a different base image - e.g., to test older/newer devices.
A user can't intentionally choose a base image other than the Default image (e.g., a Google Play enabled image)
Describe the solution you'd like
Wrapping sdkmanager --list to generate a list of all available packages
Filtering that list to only include system images that correspond to supported Android versions for the current architecture (e.g., no point displaying arm64 images on an x86_64 laptop; no point displaying any image prior to Android-26, as that's the minimum supported version).
Displaying the list of candidate images as a choice to the user when creating a new emulator. There is a TODO in the code indicating where this choice should be displayed.
Additional context
sdkmanager is a tool provided by the Android toolchain to do package management. Run briefcase run -v to see examples of how it can be run, including the environment variables that must be set in order to invoke it.
sdkmangager --list will give you a list of available images; any package starting with system_images; is, as the name suggests, a system image. The default system image used by briefcase on M1 hardware is system-images;android-31;default;arm64-v8a (system images are architecture dependent; only architecture-appropriate options should be provided).
sdkmangager --list_installed will give you a list of images that are currently installed.
sdkmanager <package name> will download and install a package.
Android emulators (called AVDs) are stored in ~/.briefcase/avd. There is a .ini config file and a .avd directory for each emulator, with the name of these files matching the emulator name. The .avd folder contains a config.ini that details the system image required by the AVD under the image.sysdir.1 key (e.g., image.sysdir.1=system-images/android-31/default/arm64-v8a/)
The text was updated successfully, but these errors were encountered:
The Android toolchain currently hard-codes the system image that is used on emulator images built by Briefcase (at time of writing, the default Android-31 image is used). This system image is downloaded when the emulator binary is downloaded, and is never directly updated.
This has some unfortunate side effects:
Describe the solution you'd like
sdkmanager --list
to generate a list of all available packagesAdditional context
sdkmanager
is a tool provided by the Android toolchain to do package management. Runbriefcase run -v
to see examples of how it can be run, including the environment variables that must be set in order to invoke it.sdkmangager --list
will give you a list of available images; any package starting withsystem_images
; is, as the name suggests, a system image. The default system image used by briefcase on M1 hardware issystem-images;android-31;default;arm64-v8a
(system images are architecture dependent; only architecture-appropriate options should be provided).sdkmangager --list_installed
will give you a list of images that are currently installed.sdkmanager <package name>
will download and install a package.Android emulators (called AVDs) are stored in
~/.briefcase/avd.
There is a.ini
config file and a.avd
directory for each emulator, with the name of these files matching the emulator name. The .avd folder contains aconfig.ini
that details the system image required by the AVD under theimage.sysdir.1
key (e.g.,image.sysdir.1=system-images/android-31/default/arm64-v8a/
)The text was updated successfully, but these errors were encountered: