Class: Fastlane::Actions::AndroidEmulatorKamiAction
- Inherits:
-
Action
- Object
- Action
- Fastlane::Actions::AndroidEmulatorKamiAction
- Defined in:
- lib/fastlane/plugin/android_emulator_kami/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
154 155 156 |
# File 'lib/fastlane/plugin/android_emulator_kami/actions/android_emulator_action.rb', line 154 def self. ["Michael Ruhl"] end |
.available_options ⇒ Object
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 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 |
# File 'lib/fastlane/plugin/android_emulator_kami/actions/android_emulator_action.rb', line 102 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), FastlaneCore::ConfigItem.new(key: :resolution_width, env_name: "AVD_RESOLUTION_WIDTH", description: "Resolution of avd width", default_value: "1080", optional: true), FastlaneCore::ConfigItem.new(key: :resolution_height, env_name: "AVD_RESOLUTION_HEIGHT", description: "Resolution of avd height", default_value: "1920", optional: true), FastlaneCore::ConfigItem.new(key: :resolution_dpi, env_name: "AVD_RESOLUTION_DPI", description: "Device DPI", default_value: "480", optional: true) ] end |
.description ⇒ Object
83 84 85 |
# File 'lib/fastlane/plugin/android_emulator_kami/actions/android_emulator_action.rb', line 83 def self.description "Creates and starts an Android Emulator (AVD)" end |
.details ⇒ Object
87 88 89 |
# File 'lib/fastlane/plugin/android_emulator_kami/actions/android_emulator_action.rb', line 87 def self.details "Great for Screengrab" end |
.example_code ⇒ Object
91 92 93 94 95 96 97 98 99 100 |
# File 'lib/fastlane/plugin/android_emulator_kami/actions/android_emulator_action.rb', line 91 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
158 159 160 |
# File 'lib/fastlane/plugin/android_emulator_kami/actions/android_emulator_action.rb', line 158 def self.is_supported?(platform) platform == :android end |
.run(params) ⇒ Object
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 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
# File 'lib/fastlane/plugin/android_emulator_kami/actions/android_emulator_action.rb', line 9 def self.run(params) sdk_dir = params[:sdk_dir] port = params[:port] adb = "#{sdk_dir}/platform-tools/adb" resolution_width = params[:resolution_width] resolution_height = params[:resolution_height] resolution_dpi = params[:resolution_dpi] 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") ini_path = "#{Dir.home}/.android/avd/#{params[:name]}.avd/config.ini" inifile = IniFile.load(ini_path) settings = inifile["global"] new_settings = { "hw.gpu.mode" => "auto", "hw.gpu.enabled" => "yes", "skin.dynamic" => "yes", "skin.name" => "#{resolution_width}x#{resolution_height}", "hw.lcd.height" => resolution_height, "hw.lcd.width" => resolution_width, "hw.lcd.density" => resolution_dpi } new_ini = IniFile.new new_settings.each do |key, value| new_ini["global"][key] = value end merged_ini = inifile.merge new_ini puts "New emulator configuration:\n" merged_ini["global"].each do |key, value| printf("%15s: %s\n", key, value) end merged_ini.write # 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 |