17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
|
# File 'lib/fastlane/plugin/automated_test_emulator_run_xing/factory/avd_controller_factory.rb', line 17
def self.get_avd_controller(params, avd_scheme)
UI.message(["Preparing parameters and commands for emulator:", avd_scheme.avd_name].join(" ").yellow)
path_sdk = "#{params[:SDK_path]}"
path_avdmanager_binary = path_sdk + "/tools/bin/avdmanager"
path_adb = path_sdk + "/platform-tools/adb"
path_avd = "#{params[:AVD_path]}"
sh_create_answer_no = "echo \"no\" |"
sh_create_avd = "create avd"
sh_create_avd_name = ["--name \"", avd_scheme.avd_name, "\""].join("")
sh_create_avd_package = ["--package \"", avd_scheme.create_avd_package, "\""].join("")
if avd_scheme.create_avd_device.eql? ""
sh_create_avd_device = ""
else
sh_create_avd_device = ["--device \"", avd_scheme.create_avd_device, "\""].join("")
end
if avd_scheme.create_avd_abi.eql? ""
sh_create_avd_abi = ""
else
sh_create_avd_abi = ["--abi ", avd_scheme.create_avd_abi].join("")
end
if avd_scheme.create_avd_tag.eql? ""
sh_create_avd_tag = ""
else
sh_create_avd_tag = ["--tag ", avd_scheme.create_avd_tag].join("")
end
sh_create_avd_additional_options = avd_scheme.create_avd_additional_options
sh_create_config_loc = "#{path_avd}/#{avd_scheme.avd_name}.avd/config.ini"
sh_launch_emulator_binary = [path_sdk, "/emulator/", avd_scheme.launch_avd_launch_binary_name].join("")
sh_launch_avd_name = ["-avd ", avd_scheme.avd_name].join("")
sh_launch_avd_additional_options = avd_scheme.launch_avd_additional_options
sh_launch_avd_port = ["-port", avd_scheme.launch_avd_port].join(" ")
if avd_scheme.launch_avd_snapshot_filepath.eql? ""
sh_launch_avd_snapshot = ""
else
sh_launch_avd_snapshot = ["-wipe-data -initdata ", avd_scheme.launch_avd_snapshot_filepath].join("")
end
sh_delete_avd = ["delete avd -n ", avd_scheme.avd_name].join("")
sh_specific_device = "-s"
sh_device_name_adb = ["emulator-", avd_scheme.launch_avd_port].join("")
sh_get_property = "shell getprop"
sh_kill_device = "emu kill"
avd_controller = AVD_Controller.new
avd_controller.command_create_avd = [
sh_create_answer_no,
path_avdmanager_binary,
sh_create_avd,
sh_create_avd_name,
sh_create_avd_package,
sh_create_avd_device,
sh_create_avd_tag,
sh_create_avd_abi,
sh_create_avd_additional_options].join(" ")
avd_controller.output_file = Tempfile.new('emulator_output')
avd_output = File.exists?(avd_controller.output_file) ? ["&>", avd_controller.output_file.path, "&"].join("") : "&>/dev/null &"
avd_controller.command_start_avd = [
sh_launch_emulator_binary,
sh_launch_avd_port,
sh_launch_avd_name,
sh_launch_avd_snapshot,
sh_launch_avd_additional_options,
avd_output].join(" ")
avd_controller.command_delete_avd = [
path_avdmanager_binary,
sh_delete_avd].join(" ")
if path_avd.nil? || (avd_scheme.create_avd_hardware_config_filepath.eql? "")
avd_controller.command_apply_config_avd = ""
else
avd_controller.command_apply_config_avd = [
"cat",
avd_scheme.create_avd_hardware_config_filepath,
">",
sh_create_config_loc].join(" ")
end
avd_controller.command_get_property = [
path_adb,
sh_specific_device,
sh_device_name_adb,
sh_get_property].join(" ")
avd_controller.command_kill_device = [
path_adb,
sh_specific_device,
sh_device_name_adb,
sh_kill_device,
"&>/dev/null"].join(" ")
return avd_controller
end
|