如何使用ADB Shell在安卓设备输入非英文文本并解决执行报错
解决ADB Shell输入非英文文本时的killProcess报错问题
遇到adb shell input text 'السلام'触发java.lang.Exception: call killProcess callstack! pid=4398 Killed报错,通常是ADB对非ASCII字符的解析兼容问题,可尝试以下方案:
更新ADB到最新稳定版本
旧版ADB对非英文(如阿拉伯语)等Unicode字符的支持存在缺陷,先执行adb version查看当前版本,更新到官方最新稳定版后重试命令。将非ASCII字符转为URL编码后输入
input text命令直接传入非ASCII字符时容易出现解析失败,可把目标文本转为URL编码格式:- 阿拉伯语
السلام对应的URL编码为%D8%A7%D9%84%D8%B3%D9%84%D8%A7%D9%85 - 执行命令:
adb shell input text '%D8%A7%D9%84%D8%B3%D9%84%D8%A7%D9%85'
(Linux/macOS下可通过命令生成编码:printf "%s" 'السلام' | xxd -plain | sed 's/\(..\)/%\1/g')
- 阿拉伯语
临时关闭SELinux限制(测试用)
部分设备的SELinux严格模式会阻断shell进程的输入操作,可临时关闭:
执行adb shell setenforce 0,之后再运行输入命令验证是否解决。注意重启设备后SELinux会恢复默认状态,不建议长期关闭。切换系统默认输入法后重试
第三方输入法可能对ADB输入命令存在兼容问题,先切换到系统自带输入法:- 列出当前可用输入法:
adb shell ime list -s - 切换到系统输入法(比如
com.android.inputmethod.latin/.LatinIME):adb shell ime set com.android.inputmethod.latin/.LatinIME - 重新执行
input text命令
- 列出当前可用输入法:
内容的提问来源于stack exchange,提问作者yas
相关产品推荐
相关产品推荐

