2014-02-11 2 views
6

Я хочу изменить язык через АБР. Стараюсь:Изменение языка устройства через 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 ... –

+0

Попробуйте получить интерактивную оболочку первого и выдачи вашей команды один на один , Это может устранить любую проблему с вашей хост-системой, интерпретирующую или изменяющую последовательность команд (сообщения об ошибках при остановке и запуске выглядят подозрительно, как они пытаются работать в системе разработки, а не в устройстве Android). Вы также можете попробовать процитировать все после 'adb shell' –

+0

, возможно, на вашем устройстве нет setprop, доступного пользователю adb. – njzk2

ответ

2

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

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

Вам необходимо корневое устройство.

+0

Неправильный синтаксис, может быть. Сейчас я занимаюсь некоторыми исследованиями, чтобы узнать больше об этом. Или, может быть, недостающие команды вызваны неуправляемым устройством, которое скрывает эти команды? Не знаю, я получил эту команду некоторое время назад, где работал, когда я ее использовал. –

+0

Мне нужно сделать это на непринужденном устройстве. – user3258796

+0

или, может быть, у вас есть идея поменять язык с помощью appium и python? Мне нужно это для автоматизированных тестов – user3258796

-5

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

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

+0

так, что вы предлагаете? Я не могу подключить устройство. Мне нужно изменить язык через appium и python – user3258796

+0

Так почему вы даете мне «-1», когда он на устройстве без укоренения невозможен? Есть еще один вариант, который вы можете сделать ... вам нужен сервер-клиент, это означает, что ваше приложение и сервер общаются, и устройство отправляет команду сделать скриншот adb на сервере! Другими словами, не adb на вашем устройстве делает скриншот, это делает adb на сервере. Это хороший обход. –

+0

Я не даю вам никаких очков. У меня есть небольшая точка репутации, чтобы проголосовать – user3258796

18

Ваши ошибки не имеют отношения к 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" 
+0

Я пробую вашу команду, но ничего не случилось:/ – user3258796

+2

вам все равно нужен «root». Я только что объяснил наиболее очевидную ошибку. –

+0

Я не могу учить свое устройство:/ – user3258796

2

Это повсюду, чтобы положить его просто

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

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

укоренено устройство или 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]:/ # 
+0

Он работает только один раз. Когда я меняю системный язык во второй раз, ничего не происходит –

+0

Мое устройство является эмулятором с Android N –

5

Вы можете изменить языковые настройки/язык для тестирования без укоренения устройства, а также на новых (4.2+) устройств. Вы должны создать an application that changes the device locale. Или вы можете использовать вспомогательное приложение, например. ADB Change Language.

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

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

+0

Я бы предпочел это: https://play.google.com/store/apps/details?id=com.wowapp .localemorepro. Это позволяет вам иметь избранное, поэтому вы можете легко переключаться на них. –

+0

Ты святой! –

+0

Это хороший ресурс :) – moxi

1

для Android M или новее, вам нужно использовать:

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

хх язык, XX является страна

+0

Не повезло на N, используя pt-BR (бразильский португальский) после 'adb shell'. – spaaarky21

1

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

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

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

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

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

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

    de_DE 
    en_EN 
    fr_FR 
    ko_KO 
    pt_PT 
    es_ES 
    ja_JA 
    
Смежные вопросы