Skip to content

Commit 39a0c88

Browse files
committed
Check and install missing system images packages before creating emulators.
1 parent 3c1714d commit 39a0c88

3 files changed

Lines changed: 24 additions & 3 deletions

File tree

lib/fastlane/plugin/automated_test_emulator_run/actions/automated_test_emulator_run_action.rb

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,16 @@ def self.run(params)
4646
UI.message("Configuring environment in order to launch emulators: ".yellow)
4747
UI.message("Getting avaliable AVDs".yellow)
4848
devices = Action.sh(adb_controller.command_get_avds)
49-
50-
for i in 0...avd_schemes.length
49+
packages = Action.sh(adb_controller.command_get_installed_packages)
50+
51+
for i in 0...avd_schemes.length
52+
unless packages.match(avd_schemes[i].create_avd_package + "\\s*|").nil?
53+
UI.message(["Missing package ", avd_schemes[i].create_avd_package, " installing..."].join("").yellow)
54+
Action.sh(avd_controllers[i].command_install_package)
55+
else
56+
UI.message(["Package ", avd_schemes[i].create_avd_package, " already installed"].join("").yellow)
57+
end
58+
5159
unless devices.match(avd_schemes[i].avd_name).nil?
5260
UI.message(["AVD with name '", avd_schemes[i].avd_name, "' currently exists."].join("").yellow)
5361
if params[:AVD_recreate_new]

lib/fastlane/plugin/automated_test_emulator_run/factory/adb_controller_factory.rb

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ class ADB_Controller
77
:command_get_devices,
88
:command_wait_for_device,
99
:command_get_avds,
10+
:command_get_installed_packages,
1011
:adb_path
1112
end
1213

@@ -18,6 +19,7 @@ def self.get_adb_controller(params)
1819
# Get paths
1920
path_sdk = "#{params[:SDK_path]}"
2021
path_avdmanager_binary = path_sdk + "/tools/bin/avdmanager"
22+
path_sdkmanager_binary = path_sdk + "/tools/bin/sdkmanager"
2123
path_adb = path_sdk + "/platform-tools/adb"
2224

2325
# ADB shell command parts
@@ -54,6 +56,11 @@ def self.get_adb_controller(params)
5456
adb_controller.command_get_avds = [
5557
path_avdmanager_binary,
5658
sh_list_avd_adb].join(" ").chomp
59+
60+
adb_controller.command_get_installed_packages = [
61+
path_sdkmanager_binary,
62+
"--list"
63+
].join(" ")
5764

5865
return adb_controller
5966
end

lib/fastlane/plugin/automated_test_emulator_run/factory/avd_controller_factory.rb

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ module Fastlane
44
module Factory
55

66
class AVD_Controller
7-
attr_accessor :command_create_avd, :command_start_avd, :command_delete_avd, :command_apply_config_avd, :command_get_property, :command_kill_device,
7+
attr_accessor :command_install_package, :command_create_avd, :command_start_avd, :command_delete_avd, :command_apply_config_avd, :command_get_property, :command_kill_device,
88
:output_file
99

1010
def self.create_output_file(params)
@@ -20,6 +20,7 @@ def self.get_avd_controller(params, avd_scheme)
2020
# Get paths
2121
path_sdk = "#{params[:SDK_path]}"
2222
path_avdmanager_binary = path_sdk + "/tools/bin/avdmanager"
23+
path_sdkmanager_binary = path_sdk + "/tools/bin/sdkmanager"
2324
path_adb = path_sdk + "/platform-tools/adb"
2425
path_avd = "#{params[:AVD_path]}"
2526

@@ -122,6 +123,11 @@ def self.get_avd_controller(params, avd_scheme)
122123
sh_kill_device,
123124
"&>/dev/null"].join(" ")
124125

126+
avd_controller.command_install_package = [
127+
path_sdkmanager_binary,
128+
"\"" + avd_scheme.create_avd_package + "\""
129+
].join(" ")
130+
125131
return avd_controller
126132
end
127133
end

0 commit comments

Comments
 (0)