ADB发送中文到手机
1.何为ADB
Android 调试桥 (Android Debug Bridge, adb) 是一种功能多样的命令行工具,可让您与设备进行通信。adb 命令可用于执行各种设备操作(例如安装和调试应用),并提供对 Unix shell(可用来在设备上运行各种命令)的访问权限。它是一种客户端-服务器程序,包括以下三个组件:… …
2.故事
因为业务需求,需要使用adb命令模拟点击和填写文字(中文,英文,数字),adb发送文字大家都知道是:
这样就可以将Hello推送到手机上当前对焦的如TextView等输入控件上。当时当我尝试如下命令就会出现无法推送到情况
通过搜索引擎得知目前adb因为设计的缺陷无法发送中文字符(unicode),于是又通过搜索引擎找到了一个开源工具https://github.com/senzhk/ADBKeyBoard,通过安装此输入法并将其设置为默认输入法即可通过adb方式发送中文(这里测试魅族部分机型无法修改系统输入法,系统版本Flyme 8.0.0.0A)华为部分机型可以设置,部分小米手机也可以,但是你要额外开启USB安全模式。接下来就是按照ADBKeyBoard给出的使用方法进行测试了
然而,第一个用例就翻车了,出现了乱码,不过还好至少能有反应了。继续阅读,发现下面有类似将字符进行Base64编码后再丢给工具进行发送的例子如下:
但是很遗憾,我是Python3(Windows10)平台,于是得对这条命令进行改造在pyton中写一个汉字转base64编码的方法即可:
一行搞定,接下来只要在需要发送中文的地方进行如下调用即可
3.ABD常用命令
1.adb devices , 获取设备列表及设备状态
2.adb get-state , 获取设备的状态
设备的状态有 3 钟,device , offline , unknown
device:设备正常连接
offline:连接出现异常,设备无响应
unknown:没有连接设备
3.安装卸载应用程序
adb install 用于安装
安装成功,返回成功提示 “Success”;
安装失败,会返回以下:
INSTALL_FAILED_ALREADY_EXISTS
此时需要用 -r 参数来重新安装。
INSTALL_FAILED_SIGNATURE_ERROR
应用的签名不一致,可能是发布版和调试版签名不同所致。也有可能是没卸载旧应用导致。
INSTALL_FAILED_INSUFFICIENT_STORAGE
存储空间不足,需要检查设备存储情况。
adb uninstall 用于卸载
adb uninstall 后面带的是应用的包名,而不是应用名。
查看系统所有应用的包名:
adb shell pm list packages –f
4.上传、下载文件
adb push 命令将PC机上的文件推到 DLT-RK3288 机器上;
adb pull 命令将DLT-RK3288机器上的文件拉到PC机上;
例如:
adb push d:/new.txt /sdcard/
将D盘下new.txt文件 推到内部存储器
adb pull /sdcard/new.txt d:\
将DLT-RK3288 内部存储器根目录下的new.txt 拉到D盘
5. adb shell pm list package
Package Manager , 可以用获取到一些安装在 Android 设备上得应用信息
-s:列出系统应用
-f:列出应用包名及对应的apk名及存放位置
6.adb shell
通过adb shell 命令,就可以进入设备或者模拟器的shell环境了,在这个Linux shell中,我们就可以执行各种Linux命令了。
如果只想执行一条shell命令,就可以采用:adb shell [shell_command],在实际使用中,经常与grep或findstr一起使用,起到过滤作用,查看自己需要的关键信息。
7. 常见命令:
如 ls, cd, rm, mkdir, touch, pwd, cp, mv, ifconfig, netstat, ping, ps, top等,进入adb shell即可执行,与linux相似.