module Fastlane::Helper::EmulatorLanguage

Public Class Methods

set(lang, docker_commander) click to toggle source
# File lib/fastlane/plugin/mango/helper/emulator_language.rb, line 4
def self.set(lang, docker_commander)
  UI.important("Changing device locale to #{lang}")

  retries ||= 5
  language = lang.split('_')[0]
  country = lang.split('_')[1]
  apk_path = File.join(File.dirname(__FILE__), 'settings.apk')
  docker_commander.cp(file: apk_path)
  docker_commander.exec(command: 'adb install /root/tests/settings.apk')
  docker_commander.exec(command: 'adb shell pm grant io.appium.settings android.permission.CHANGE_CONFIGURATION')
  docker_commander.exec(command: "adb shell am broadcast -a io.appium.settings.locale -n io.appium.settings/.receivers.LocaleSettingReceiver --es lang #{language} --es country #{country}")
rescue StandardError => e
  raise e if retries.zero?

  puts "Got an exception: #{e.message}. Will retry in 5 seconds"
  retries -= 1
  sleep 5
  retry
end