Изменение языка устройства через ADB

Я хочу изменить язык через АБР. Я пытаюсь:

adb shell setprop persist.sys.language fr;setprop persist.sys.country CA;stop;sleep 5;start

но я получаю ошибки:

setprop: command not found
stop: missing job name
Try `stop --help' for more information.
start: missing job name
Try `start --help' for more information.

что не так? Я хочу сделать это на физическом устройстве

Ответ 1

Ваши ошибки не имеют ничего общего с adb. Вам просто не хватает понимания того, как ваша локальная оболочка обрабатывает вашу команду. Вы выполняете эти команды локально (на вашем ПК):

adb shell setprop persist.sys.language fr
setprop persist.sys.country CA
stop
sleep 5
start

и сообщения об ошибках, которые вы видите, из локальной оболочки (т.е. в вашей системе нет исполняемого файла setprop, а команды start и stop имеют необязательные параметры.

правильная команда будет

adb shell "setprop persist.sys.language fr; setprop persist.sys.country CA; setprop ctl.restart zygote"

или в более поздних версиях Android:

adb shell "setprop persist.sys.locale fr-CA; setprop ctl.restart zygote"

Ответ 2

Вы можете изменить язык/язык для тестирования без рутирования устройства, в том числе на более новых (4. 2+) устройствах. Вы должны создать приложение, которое изменяет язык устройства. Или вы можете использовать вспомогательное приложение, например, ADB Change Language.

Далее, на 4. 2+ устройствах вы должны использовать предоставить разрешение CHANGE_CONFIGURATION приложения через adb, adb shell pm grant <package_name> android.permission.CHANGE_CONFIGURATION.

Наконец, вы можете использовать команды adb (запускать активность) для переключения локали.

Ответ 3

Попробуйте это

adb shell "su -c 'setprop persist.sys.language fr; setprop persist.sys.country CA; stop; sleep 5; start'

Вам нужно внедренное устройство.

Ответ 4

Это повсюду, просто говоря

setprop будет работать только на AVD или корневом физическом устройстве

Альтернативой является использование настроек в Launcher.

Укорененное устройство или AVD это работает:

<android-sdk path>/platform-tools/adb shell
[email protected]:/ # getprop persist.sys.language
getprop persist.sys.language
en
[email protected]:/ # setprop persist.sys.language fr
setprop persist.sys.language fr
[email protected]:/ # setprop persist.sys.country CA
setprop persist.sys.country CA
[email protected]:/ # stop
stop
[email protected]:/ # start
start
[email protected]:/ # sleep 5
sleep 5
[email protected]:/ # getprop |grep lang
getprop |grep lang
[persist.sys.language]: [fr]
[email protected]:/ # getprop |grep country
getprop |grep country
[persist.sys.country]: [CA]
[email protected]:/ #

Ответ 5

Выполните следующие шаги:

  • Создать эмулятор с API-интерфейсом google Intel x86
  • Запустите эмулятор, выполнив команду:

    adb root
    
  • Запустите следующую команду оболочки через adb:

    adb -e shell "su root; setprop persist.sys.locale pt-PT; stop; sleep 2; start" 
    

    затем выйдите из оболочки, которая перезапускает эмулятор.

  • Локали нам нужны для скриншотов:

    de_DE
    en_EN
    fr_FR
    ko_KO
    pt_PT
    es_ES
    ja_JA
    

Ответ 6

Для Android M или новее вам необходимо использовать:

setprop ro.product.locale xx-XX
setprop persist.sys.locale xx-XX

xx - язык, XX - страна

Ответ 7

Решение сделать это без рута. Вы можете использовать что-то вроде этой функции ниже. Функция входит в настройки и использует пользовательский интерфейс для изменения настроек локали.

https://github.com/dtmilano/AndroidViewClient/blob/480ab93dbd01296a68c1ce7109ceb8275d1ed8a7/src/com/dtmilano/android/viewclient.py#L1302

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

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

Ответ 8

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

И скрипт использовал:

adb shell "su 0 setprop persist.sys.locale ja";adb shell "su 0 setprop ctl.restart zygote"

Может добавить , спать 20 в конце, если некоторые команды в сценарии ниже этой команды зависят от готовности устройства.

Ответ 9

Есть несколько решений. Это работает для меня.


1.

Оболочка adb am start -a android.settings.LOCALE_SETTINGS (Вы можете увидеть меню языка, затем выбрать язык по appium)


2.

скачать adbchangelanguage в магазине Google

adb shell pm grant net.sanapeli.adbchangelanguage android.permission.CHANGE_CONFIGURATION

adb shell am start -n net.sanapeli.adbchangelanguage/.AdbChangeLanguage -e язык zh -e страна TW https://gist.github.com/douglasselph/b9998e69998759c6cceec1df1aa96ac5


3.

используя appium, затем установите желаемые возможности (язык и локаль) http://appium.io/docs/en/writing-running-appium/caps/

Ответ 10

Вы не можете сделать это с помощью adb на своем устройстве. Ваш adb вне устройства, я имею в виду на вашем компьютере, связанном с usb, может изменить его с передачей разрешения перед изменением языка.

На вашем устройстве напрямую требуется корневое устройство.