You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Appium:如何在API 24及以上版本Android模拟器修改语言?

问题根源与解决方案

这个问题的核心在于Android 7.0(API 24)及以上版本对系统语言/区域的设置机制发生了变化——Appium旧版的MobileCapabilityType.Language和MobileCapabilityType.Locale这两个独立的Capability已经不再生效。因为从Android 7开始,系统引入了多语言环境支持,原来的单语言设置逻辑被废弃,需要用新的方式配置。

具体解决方案

1. 使用Appium统一Locale Capability(推荐)

对于API 24+的设备,你需要放弃分开设置Language和Locale,改用统一的appium:locale Capability,格式为语言代码-区域代码(比如cs-CZ对应捷克语-捷克,en-US对应英语-美国)。修改后的Capability配置如下:

API 24(7.0.0)及以上版本的配置:

capabilities.SetCapability(AndroidMobileCapabilityType.Avd, "AND_7.0.0_1080x1920_4.95in");
capabilities.SetCapability(MobileCapabilityType.PlatformName, "Android");
capabilities.SetCapability(MobileCapabilityType.DeviceName, "AND_7.0.0_1080x1920_4.95in");
capabilities.SetCapability(MobileCapabilityType.PlatformVersion, "7.0");
// 替换原来的Language和Locale,用统一的locale格式
capabilities.SetCapability("appium:locale", Session.Language + "-" + Session.Locale);
capabilities.SetCapability(MobileCapabilityType.App, app);

注意:appium:locale是Appium 1.15+版本开始支持的标准Capability,确保你的Appium服务器和UiAutomator2驱动版本是最新的(建议Appium ≥ 1.20.0)。

2. 备选方案:通过ADB Shell命令强制设置

如果上述方法仍不生效,可以在测试启动后,通过Appium执行ADB命令直接修改系统语言设置,然后重启应用:

// 构造语言区域字符串,比如cs-CZ或en-US
string localeStr = $"{Session.Language}-{Session.Locale}";
// 执行ADB命令设置系统语言
driver.ExecuteScript("mobile: shell", new Dictionary<string, object> { 
    { "command", $"setprop persist.sys.locale {localeStr}; setprop persist.sys.language {Session.Language}; setprop persist.sys.country {Session.Locale}" } 
});
// 重启应用使设置生效
driver.ResetApp();

这种方式绕过了Appium的Capability限制,直接修改系统属性,兼容性更强,但需要确保模拟器有足够的权限(默认AVD都具备)。

额外注意事项

  • 确认你使用的是UiAutomator2驱动:API 24+的设备默认会使用UiAutomator2,而旧的Selendroid驱动仅支持到API 23,不要强行切换。
  • 检查AVD配置:确保你的模拟器没有被设置为固定语言(可以手动进入AVD的「Settings」修改语言,确认正常后再用自动化脚本设置)。
  • 升级Appium组件:如果你的Appium服务器或UiAutomator2驱动版本过旧,可能存在已知的语言设置bug,建议升级到最新稳定版。

内容的提问来源于stack exchange,提问作者Tomas Mio Novak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:00:34