Изменение языкового стандарта эмулятора Android автоматически

Для автоматического тестирования (используя Hudson) у меня есть сценарий, который генерирует множество эмуляторов для многих комбинаций версии ОС Android, разрешения экрана, плотности экрана и языка.
Это отлично работает, за исключением языковой части.

Мне нужно найти способ автоматически изменить локаль системы Android. Вот некоторые подходы, о которых я могу думать, в порядке предпочтения:

  • Извлечение / редактирование / переупаковка изображения QEMU непосредственно перед запуском эмулятора
  • Запуск какой-то APK-адаптера, изменяющего систему, на эмуляторе после запуска
  • Изменение настроек языкового стандарта в файловой системе эмулятора после запуска
  • Изменение настроек языкового стандарта в некоторых SQLite DB на эмуляторе после запуска
  • Выполнение последовательности клавиш (через интерфейс telnet эмулятора), который откроет приложение настроек и изменит локаль
  • Вручную запуск эмулятора для каждой версии платформы, изменение языкового стандарта вручную, сохранение и архивирование изображений для последующего развертывания

Любые идеи, можно ли это сделать, либо с помощью вышеуказанных методов, либо иначе?

Вы знаете, где языковые настройки сохраняются / считываются системой?


Решение:
Благодаря информации dtmilano о соответствующих свойствах и некоторым дополнительным исследованиям с моей стороны, я придумал решение еще лучше и проще, чем все вышеизложенные идеи!

Я обновил его ответ ниже с подробностями.

Solutions Collecting From Web of "Изменение языкового стандарта эмулятора Android автоматически"

Лично я думаю, что самый простой способ – запустить эмулятор, возможно, чистый экземпляр, если вы не используете интеграционные тесты, которые зависят от других приложений, а затем меняют локаль с помощью adb:

$ adb shell ' setprop persist.sys.language en; setprop persist.sys.country GB; stop; sleep 5; start' 

Или любой другой язык, который вы хотите установить. Чтобы убедиться, что ваши изменения были успешными, просто используйте

 $ adb shell 'getprop persist.sys.language' 

Вы также можете запускать эмуляторы в известных портах, проверить мой ответ в этом потоке .


Обратите внимание, что вы также можете установить системные свойства непосредственно при запуске эмулятора :

 emulator -avd my_avd -prop persist.sys.language=en -prop persist.sys.country=GB 

Таким образом, вы можете создать простой старый эмулятор любого типа, а затем запустить его немедленно, используя выбранный вами язык, без необходимости вносить какие-либо изменения в изображения эмулятора.

Этот локаль будет сохраняться для будущих прогонов эмулятора, хотя, конечно, вы всегда можете изменить его снова при запуске или во время выполнения.

Принятый ответ больше не работает. persist.sys.language и persist.sys.country ушли из свойств эмулятора.

Мое решение состоит в том, чтобы использовать предустановленное приложение android-эмулятор «Custom locale». Просто отправьте намерение с дополнительным параметром языка, как показано ниже:

 adb shell am broadcast -a com.android.intent.action.SET_LOCALE --es com.android.intent.extra.LOCALE EN 

Дополнительная информация здесь – подготовить эмулятор Android для автоматизации тестирования пользовательского интерфейса.