class Fastlane::Actions::AndroidEmulatorAction
Public Class Methods
available_options()
click to toggle source
# File lib/fastlane/plugin/android_emulator/actions/android_emulator_action.rb, line 85 def self.available_options [ 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()
click to toggle source
# 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()
click to toggle source
# File lib/fastlane/plugin/android_emulator/actions/android_emulator_action.rb, line 70 def self.details "Great for Screengrab" end
example_code()
click to toggle source
# 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)
click to toggle source
# File lib/fastlane/plugin/android_emulator/actions/android_emulator_action.rb, line 125 def self.is_supported?(platform) platform == :android end
run(params)
click to toggle source
# 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.message("Stopping emulator") system("#{adb} emu kill > /dev/null 2>&1 &") sleep(2) UI.message("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.message("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.message("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.message("Set location") sh("LC_NUMERIC=C; #{adb} emu geo fix #{params[:location]}") end if params[:demo_mode] UI.message("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