通过ADB更改设备语言

时间:2014-02-11 20:21:11

标签: android 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.

有什么不对? 我想在物理设备上执行此操作

13 个答案:

答案 0 :(得分:25)

您的错误与adb无关。您只是缺乏对本地shell如何处理命令的理解。您正在做的是在本地(在您的PC上)运行这些命令:

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

,您看到的错误消息来自本地shell(即系统上没有setprop可执行文件,startstop命令具有非可选参数。

正确的命令是

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"

答案 1 :(得分:14)

您可以更改区域设置/语言以用于测试目的而无需生根设备,也可以更新(4.2+)设备。您必须创建an application that changes the device locale。或者,您可以使用帮助应用程序,例如ADB Change Language

接下来,在4.2以上的设备上,您必须通过adb adb shell pm grant <package_name> android.permission.CHANGE_CONFIGURATION使用授予应用CHANGE_CONFIGURATION权限。

最后,您可以使用adb命令(启动活动)来切换区域设置。

答案 2 :(得分:2)

试试这个

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

您需要一个有根设备。

答案 3 :(得分:2)

这就是所有地方,简单地说就是

setprop仅适用于AVD或有根的物理设备

另一种方法是使用Launcher中的设置。

有效的设备或AVD:

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

答案 4 :(得分:1)

执行以下步骤:

  • 使用Google API Intel x86
  • 创建模拟器
  • 通过运行以下命令来启动模拟器:

    adb root
    
  • 通过adb运行以下shell命令:

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

    然后,退出重新启动模拟器的shell。

  • 屏幕截图所需的语言区域:

    de_DE
    en_EN
    fr_FR
    ko_KO
    pt_PT
    es_ES
    ja_JA
    

答案 5 :(得分:0)

对于Android M或更新版本,您需要使用:

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

xx是语言,XX是国家

答案 6 :(得分:0)

无需生根的解决方案。 您可以在下面的函数中使用类似的功能。 该功能进入设置并执行UI来更改语言环境设置。

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

棘手的部分是当您使用另一种语言时,要使用正确的语言。您可能会认为该语言在列表中始终保持相同的索引,但不幸的是并非如此。因此,您必须拥有这样的解决方案。

缺点:您需要对它进行一些微调才能处理不同的电话,设置的顺序可能不同。

答案 7 :(得分:0)

在模拟器上: 手动更改语言后,它停止工作,必须在AVD管理器中擦除Emulator的数据才能使其再次工作。

使用的脚本:

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

如果此命令下面的脚本中的某些命令取决于准备就绪的设备,则可以最后添加; sleep 20

答案 8 :(得分:0)

解决方案很少。它对我有用。


1。

adb shell开始-android.settings.LOCALE_SETTINGS (您可以看到语言菜单,然后按appium选择语言)


2。

在Google商店中下载adb​​change语言

adb shell pm授予net.sanapeli.adbchangelanguage android.permission.CHANGE_CONFIGURATION

adb shell开始-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/

答案 9 :(得分:0)

API 28+的解决方案是

adb shell am broadcast -a com.android.intent.action.SET_LOCALE --es com.android.intent.extra.LOCALE "en_US" com.android.customlocale2

答案 10 :(得分:0)

根据official documents

使用 adb shell 更改模拟器中的语言环境。

  1. 选择您要测试的区域设置并确定其 BCP-47 语言标签,例如,加拿大法语将是 fr-CA

  2. 启动模拟器。

  3. 从主机上的命令行 shell,运行以下命令:

    adb shell
    

    或者如果您连接了设备,请通过添加 -e 选项指定您需要模拟器:

    adb -e shell
    
  4. 在 adb shell 提示符 (#) 下,运行以下命令:

    setprop persist.sys.locale [BCP-47 language tag];stop;sleep 5;start
    

用步骤 1 中的适当代码替换括号中的部分。

例如,用加拿大法语进行测试:

  setprop persist.sys.locale fr-CA;stop;sleep 5;start 

这会导致模拟器重新启动。 (看起来像是完全重启,但事实并非如此。)再次出现主屏幕后,重新启动您的应用,应用就会以新的语言环境启动。

答案 11 :(得分:0)

要将语言设置为美国英语,请在终端中运行以下命令:

adb shell "setprop persist.sys.locale en-US; setprop ctl.restart zygote"

要更改为其他语言,请参阅以下语言列表: https://developers.google.com/interactive-media-ads/docs/sdks/android/client-side/localization#locale-codes

答案 12 :(得分:-5)

您无法使用设备上的adb执行此操作。您在设备外部的adb,我的意思是在与USB连接的计算机上,可以在更改语言之前通过权限更改它。

直接在您的设备上,您需要一个有根设备。