From aa283884fee8b163687e34a41a035a461c818eaa Mon Sep 17 00:00:00 2001 From: Hiroto Nakamura Date: Fri, 18 Feb 2022 17:06:30 +1300 Subject: [PATCH 1/3] Add support for cmdline-tools --- README.md | 2 +- .../plugin/automated_test_emulator_run.rb | 2 +- .../automated_test_emulator_run_action.rb | 2 +- .../factory/adb_controller_factory.rb | 6 ++-- .../factory/avd_controller_factory.rb | 8 ++--- .../helper/sdk_tools_helper.rb | 35 +++++++++++++++++++ 6 files changed, 45 insertions(+), 10 deletions(-) create mode 100644 lib/fastlane/plugin/automated_test_emulator_run/helper/sdk_tools_helper.rb diff --git a/README.md b/README.md index 1b6c111..6115b44 100644 --- a/README.md +++ b/README.md @@ -57,7 +57,7 @@ JSON file scheme: ``` Parameters: -
For official help refer to `avdmanager` binary file: `/tools/bin/avdmanager create avd` +
For official help refer to `avdmanager` binary file: `/cmdline-tools/latest/bin/avdmanager create avd` - `avd_name` - name of your AVD, avoid using spaces, this field is necessary - `create_avd_package` - path to system image in example "system-images;android-23;google_apis;x86_64" - `create_avd_device` - name of your device visible on `avdmanager list device` list diff --git a/lib/fastlane/plugin/automated_test_emulator_run.rb b/lib/fastlane/plugin/automated_test_emulator_run.rb index 318056a..1e4841c 100644 --- a/lib/fastlane/plugin/automated_test_emulator_run.rb +++ b/lib/fastlane/plugin/automated_test_emulator_run.rb @@ -3,7 +3,7 @@ module Fastlane module AutomatedTestEmulatorRun def self.all_classes - Dir[File.expand_path('**/{actions,factory,provider}/*.rb', File.dirname(__FILE__))] + Dir[File.expand_path('**/{actions,factory,provider,helper}/*.rb', File.dirname(__FILE__))] end end end diff --git a/lib/fastlane/plugin/automated_test_emulator_run/actions/automated_test_emulator_run_action.rb b/lib/fastlane/plugin/automated_test_emulator_run/actions/automated_test_emulator_run_action.rb index b85307e..0ddc145 100644 --- a/lib/fastlane/plugin/automated_test_emulator_run/actions/automated_test_emulator_run_action.rb +++ b/lib/fastlane/plugin/automated_test_emulator_run/actions/automated_test_emulator_run_action.rb @@ -387,7 +387,7 @@ def self.available_options FastlaneCore::ConfigItem.new(key: :SDK_path, env_name: "SDK_PATH", description: "The path to your android sdk directory (root). ANDROID_HOME by default", - default_value: ENV['ANDROID_HOME'], + default_value: ENV['ANDROID_SDK_HOME'] || ENV['ANDROID_HOME'], is_string: true, optional: true), diff --git a/lib/fastlane/plugin/automated_test_emulator_run/factory/adb_controller_factory.rb b/lib/fastlane/plugin/automated_test_emulator_run/factory/adb_controller_factory.rb index 4271093..c541366 100644 --- a/lib/fastlane/plugin/automated_test_emulator_run/factory/adb_controller_factory.rb +++ b/lib/fastlane/plugin/automated_test_emulator_run/factory/adb_controller_factory.rb @@ -16,9 +16,9 @@ def self.get_adb_controller(params) UI.message(["Preparing commands for Android ADB"].join(" ").yellow) # Get paths - path_sdk = "#{params[:SDK_path]}" - path_avdmanager_binary = path_sdk + "/tools/bin/avdmanager" - path_adb = path_sdk + "/platform-tools/adb" + sdk_helper = Helper::SdkHelper.new(params) + path_avdmanager_binary = sdk_helper.avd_manager + path_adb = sdk_helper.adb # ADB shell command parts sh_stop_adb = "kill-server" diff --git a/lib/fastlane/plugin/automated_test_emulator_run/factory/avd_controller_factory.rb b/lib/fastlane/plugin/automated_test_emulator_run/factory/avd_controller_factory.rb index a540c3d..d020620 100644 --- a/lib/fastlane/plugin/automated_test_emulator_run/factory/avd_controller_factory.rb +++ b/lib/fastlane/plugin/automated_test_emulator_run/factory/avd_controller_factory.rb @@ -18,9 +18,9 @@ def self.get_avd_controller(params, avd_scheme) UI.message(["Preparing parameters and commands for emulator:", avd_scheme.avd_name].join(" ").yellow) # Get paths - path_sdk = "#{params[:SDK_path]}" - path_avdmanager_binary = path_sdk + "/tools/bin/avdmanager" - path_adb = path_sdk + "/platform-tools/adb" + sdk_helper = Helper::SdkHelper.new(params) + path_avdmanager_binary = sdk_helper.avd_manager + path_adb = sdk_helper.adb path_avd = "#{params[:AVD_path]}" # Create AVD shell command parts @@ -51,7 +51,7 @@ def self.get_avd_controller(params, avd_scheme) sh_create_config_loc = "#{path_avd}/#{avd_scheme.avd_name}.avd/config.ini" # Launch AVD shell command parts - sh_launch_emulator_binary = [path_sdk, "/emulator/", avd_scheme.launch_avd_launch_binary_name].join("") + sh_launch_emulator_binary = [sdk_helper.emulator_dir, 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(" ") diff --git a/lib/fastlane/plugin/automated_test_emulator_run/helper/sdk_tools_helper.rb b/lib/fastlane/plugin/automated_test_emulator_run/helper/sdk_tools_helper.rb new file mode 100644 index 0000000..1da8269 --- /dev/null +++ b/lib/fastlane/plugin/automated_test_emulator_run/helper/sdk_tools_helper.rb @@ -0,0 +1,35 @@ +module Fastlane + module Helper + class SdkHelper + def initialize(params) + @sdk_root_path = params[:SDK_path] + end + + def command_line_tools_dir + return "#{@sdk_root_path}/cmdline-tools/latest/bin" if File.exist?("#{@sdk_root_path}/cmdline-tools/latest/bin") + + return tools_dir # Fallback on old tools path + end + + def tools_dir + return "#{@sdk_root_path}/tools/bin" + end + + def platform_tools_dir + return "#{@sdk_root_path}/platform-tools" + end + + def emulator_dir + return "#{@sdk_root_path}/emulator/" + end + + def adb + return "#{platform_tools_dir}/adb" + end + + def avd_manager + return "#{command_line_tools_dir}/avdmanager" + end + end + end +end \ No newline at end of file From e5ccc54b8b29ad13d58b4a20050c4cb2dd6b91e0 Mon Sep 17 00:00:00 2001 From: Hiroto Nakamura Date: Fri, 18 Feb 2022 17:17:33 +1300 Subject: [PATCH 2/3] Update description for SDK_PATH parameter --- .../actions/automated_test_emulator_run_action.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/fastlane/plugin/automated_test_emulator_run/actions/automated_test_emulator_run_action.rb b/lib/fastlane/plugin/automated_test_emulator_run/actions/automated_test_emulator_run_action.rb index 0ddc145..0bfa838 100644 --- a/lib/fastlane/plugin/automated_test_emulator_run/actions/automated_test_emulator_run_action.rb +++ b/lib/fastlane/plugin/automated_test_emulator_run/actions/automated_test_emulator_run_action.rb @@ -386,7 +386,7 @@ def self.available_options optional: false), FastlaneCore::ConfigItem.new(key: :SDK_path, env_name: "SDK_PATH", - description: "The path to your android sdk directory (root). ANDROID_HOME by default", + description: "The path to your android sdk directory (root). ANDROID_SDK_HOME by default", default_value: ENV['ANDROID_SDK_HOME'] || ENV['ANDROID_HOME'], is_string: true, optional: true), From 01376a9eb7c6c39361c6c2282be064f84fad4736 Mon Sep 17 00:00:00 2001 From: Hiroto Nakamura Date: Wed, 23 Mar 2022 22:47:30 +1300 Subject: [PATCH 3/3] Use correct env variable --- .../actions/automated_test_emulator_run_action.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/fastlane/plugin/automated_test_emulator_run/actions/automated_test_emulator_run_action.rb b/lib/fastlane/plugin/automated_test_emulator_run/actions/automated_test_emulator_run_action.rb index 0bfa838..68d9945 100644 --- a/lib/fastlane/plugin/automated_test_emulator_run/actions/automated_test_emulator_run_action.rb +++ b/lib/fastlane/plugin/automated_test_emulator_run/actions/automated_test_emulator_run_action.rb @@ -386,8 +386,8 @@ def self.available_options optional: false), FastlaneCore::ConfigItem.new(key: :SDK_path, env_name: "SDK_PATH", - description: "The path to your android sdk directory (root). ANDROID_SDK_HOME by default", - default_value: ENV['ANDROID_SDK_HOME'] || ENV['ANDROID_HOME'], + description: "The path to your android sdk directory (root). ANDROID_SDK_ROOT by default", + default_value: ENV['ANDROID_SDK_ROOT'] || ENV['ANDROID_HOME'], is_string: true, optional: true),