Изменение языка устройства через 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, может изменить его с передачей разрешения перед изменением языка.
На вашем устройстве напрямую требуется корневое устройство.