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
121 122 123 |
# File 'lib/fastlane/plugin/android_emulator/actions/android_emulator_action.rb', line 121 def self. ["Michael Ruhl"] end |
.available_options ⇒ Object
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 |
# File 'lib/fastlane/plugin/android_emulator/actions/android_emulator_action.rb', line 85 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
66 67 68 |
# File 'lib/fastlane/plugin/android_emulator/actions/android_emulator_action.rb', line 66 def self.description "Creates and starts an Android Emulator (AVD)" end |
.details ⇒ Object
70 71 72 |
# File 'lib/fastlane/plugin/android_emulator/actions/android_emulator_action.rb', line 70 def self.details "Great for Screengrab" end |
.example_code ⇒ Object
74 75 76 77 78 79 80 81 82 83 |
# File 'lib/fastlane/plugin/android_emulator/actions/android_emulator_action.rb', line 74 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
125 126 127 |
# File 'lib/fastlane/plugin/android_emulator/actions/android_emulator_action.rb', line 125 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 59 60 61 62 63 64 |
# 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" resolution_width = params[:resolution_width] || 1080 resolution_height = params[:resolution_height] || 1920 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 << "hw.lcd.height=#{resolution_width}\n" f << "hw.lcd.width=#{resolution_height}\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 |