Для автоматизированного тестирования (использующий Гудзон) у меня есть сценарий, который генерирует набор эмуляторов для многих комбинаций версии ОС Android, разрешения экрана, экранной плотности и языка.
Это хорошо работает, за исключением части языка.
Я должен найти способ изменить системную локаль Android автоматически. Вот некоторые подходы, о которых я могу думать, в порядке предпочтения:
Какие-либо идеи, может ли это быть сделано, или с помощью вышеупомянутых методов или иначе?
Вы знаете, где настройки локали сохраняются к/чтение от системой?
Решение:
Благодаря информации dtmilano о соответствующих свойствах и некоторому дальнейшему расследованию с моей стороны, я предложил решение еще лучше и более простой, чем все идеи выше!
Я обновил его ответ ниже с деталями.
Лично я считаю, что самый простой способ - запустить эмулятор, возможно, чистый экземпляр, если вы не запускаете интеграционные тесты, которые зависят от других приложений, а затем меняете языковой стандарт с помощью adb:
$ adb shell '
setprop persist.sys.language en;
setprop persist.sys.country GB;
stop;
sleep 5;
start'
или любой другой языковой стандарт, который вы хотите установить. {{ 1}} Чтобы убедиться, что ваше изменение было успешным, просто используйте
$ adb shell 'getprop persist.sys.language'
. Вы также можете запустить эмуляторы на известных портах, посмотрите мой ответ в этой ветке .
Обратите внимание, что вы также можете установить свойства системы напрямую при запуске эмулятора :
emulator -avd my_avd -prop persist.sys.language=en -prop persist.sys.country=GB
Таким образом, вы можете создать простой старый эмулятор любого типа, а затем сразу же запустить его, используя выбранную вами локаль. , без предварительной модификации изображений эмулятора.
Этот языковой стандарт будет сохраняться для будущих запусков эмулятора, хотя, конечно, вы всегда можете изменить его снова при запуске или во время выполнения.