Class: Fastlane::Actions::AndroidEmulatorAction
- Inherits:
-
Action
- Object
- Action
- Fastlane::Actions::AndroidEmulatorAction
- Defined in:
- lib/fastlane/plugin/android_emulator/actions/android_emulator_action.rb
Class Method Summary collapse
- .authors ⇒ Object
- .available_options ⇒ Object
- .description ⇒ Object
- .details ⇒ Object
- .example_code ⇒ Object
- .is_supported?(platform) ⇒ Boolean
- .run(params) ⇒ Object
Class Method Details
.authors ⇒ Object
115 116 117 |
# File 'lib/fastlane/plugin/android_emulator/actions/android_emulator_action.rb', line 115 def self. ["Michael Ruhl"] end |
.available_options ⇒ Object
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 |
# File 'lib/fastlane/plugin/android_emulator/actions/android_emulator_action.rb', line 79 def self. [ FastlaneCore::ConfigItem.new(key: :sdk_dir, env_name: "ANDROID_SDK_DIR", description: "Path to the Android SDK DIR", default_value: ENV['ANDROID_HOME'] || ENV['ANDROID_SDK_ROOT'] || ENV['ANDROID_SDK'], optional: false, verify_block: proc do |value| UI.user_error!("No ANDROID_SDK_DIR given, pass using `sdk_dir: 'sdk_dir'`") unless value and !value.empty? end), FastlaneCore::ConfigItem.new(key: :package, env_name: "AVD_PACKAGE", description: "The selected system image of the emulator", optional: false), FastlaneCore::ConfigItem.new(key: :name, env_name: "AVD_NAME", description: "Name of the AVD", default_value: "fastlane", optional: false), FastlaneCore::ConfigItem.new(key: :port, env_name: "AVD_PORT", description: "Port of the emulator", default_value: "5554", optional: false), FastlaneCore::ConfigItem.new(key: :location, env_name: "AVD_LOCATION", description: "Set location of the the emulator '<longitude> <latitude>'", optional: true), FastlaneCore::ConfigItem.new(key: :demo_mode, env_name: "AVD_DEMO_MODE", description: "Set the emulator in demo mode", is_string: false, default_value: true) ] end |
.description ⇒ Object
60 61 62 |
# File 'lib/fastlane/plugin/android_emulator/actions/android_emulator_action.rb', line 60 def self.description "Creates and starts an Android Emulator (AVD)" end |
.details ⇒ Object
64 65 66 |
# File 'lib/fastlane/plugin/android_emulator/actions/android_emulator_action.rb', line 64 def self.details "Great for Screengrab" end |
.example_code ⇒ Object
68 69 70 71 72 73 74 75 76 77 |
# File 'lib/fastlane/plugin/android_emulator/actions/android_emulator_action.rb', line 68 def self.example_code [ 'android_emulator( location: "9.1808 48.7771", package: "system-images;android-24;google_apis;x86_64", demo_mode: true, sdk_dir: "PATH_TO_SDK" )' ] end |
.is_supported?(platform) ⇒ Boolean
119 120 121 |
# File 'lib/fastlane/plugin/android_emulator/actions/android_emulator_action.rb', line 119 def self.is_supported?(platform) platform == :android end |
.run(params) ⇒ Object
7 8 9 10 11 12 13 14 15 16 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 |
# File 'lib/fastlane/plugin/android_emulator/actions/android_emulator_action.rb', line 7 def self.run(params) sdk_dir = params[:sdk_dir] port = params[:port] adb = "#{sdk_dir}/platform-tools/adb" UI.("Stopping emulator") system("#{adb} emu kill > /dev/null 2>&1 &") sleep(2) UI.("Creating new emulator") FastlaneCore::CommandExecutor.execute( command: "#{sdk_dir}/tools/bin/avdmanager create avd -n '#{params[:name]}' -f -k '#{params[:package]}' -d 'Nexus 5'", print_all: true, print_command: false ) UI.("Override configuration") open("#{Dir.home}/.android/avd/#{params[:name]}.avd/config.ini", 'a') { |f| f << "hw.gpu.mode=auto\n" f << "hw.gpu.enabled=yes\n" f << "skin.dynamic=yes\n" f << "skin.name=1080x1920\n" } # Verify HAXM installed on mac if FastlaneCore::Helper.mac? kextstat = Actions.sh("kextstat", log: false) UI.user_error! "Please install the HAXM-Extension" unless kextstat.include?("intel") end UI.("Starting emulator") system("LC_NUMERIC=C; #{sdk_dir}/tools/emulator @#{params[:name]} -port #{port} > /dev/null 2>&1 &") sh("#{adb} -e wait-for-device") until Actions.sh("#{adb} -e shell getprop init.svc.bootanim", log: false).include? "stopped" do sleep(5) end if params[:location] UI.("Set location") sh("LC_NUMERIC=C; #{adb} emu geo fix #{params[:location]}") end if params[:demo_mode] UI.("Set in demo mode") sh("#{adb} -e shell settings put global sysui_demo_allowed 1") sh("#{adb} -e shell am broadcast -a com.android.systemui.demo -e command clock -e hhmm 0700") end ENV['SCREENGRAB_SPECIFIC_DEVICE'] = "emulator-#{port}" end |