ADB發(fā)送中文到手機(jī)
1.何為ADB
Android 調(diào)試橋 (Android Debug Bridge, adb) 是一種功能多樣的命令行工具,可讓您與設(shè)備進(jìn)行通信。adb 命令可用于執(zhí)行各種設(shè)備操作(例如安裝和調(diào)試應(yīng)用),并提供對(duì) Unix shell(可用來(lái)在設(shè)備上運(yùn)行各種命令)的訪問(wèn)權(quán)限。它是一種客戶端-服務(wù)器程序,包括以下三個(gè)組件:… …
2.故事
因?yàn)闃I(yè)務(wù)需求,需要使用adb命令模擬點(diǎn)擊和填寫(xiě)文字(中文,英文,數(shù)字),adb發(fā)送文字大家都知道是:
這樣就可以將Hello推送到手機(jī)上當(dāng)前對(duì)焦的如TextView等輸入控件上。當(dāng)時(shí)當(dāng)我嘗試如下命令就會(huì)出現(xiàn)無(wú)法推送到情況
通過(guò)搜索引擎得知目前adb因?yàn)樵O(shè)計(jì)的缺陷無(wú)法發(fā)送中文字符(unicode),于是又通過(guò)搜索引擎找到了一個(gè)開(kāi)源工具h(yuǎn)ttps://github.com/senzhk/ADBKeyBoard,通過(guò)安裝此輸入法并將其設(shè)置為默認(rèn)輸入法即可通過(guò)adb方式發(fā)送中文(這里測(cè)試魅族部分機(jī)型無(wú)法修改系統(tǒng)輸入法,系統(tǒng)版本Flyme 8.0.0.0A)華為部分機(jī)型可以設(shè)置,部分小米手機(jī)也可以,但是你要額外開(kāi)啟USB安全模式。接下來(lái)就是按照ADBKeyBoard給出的使用方法進(jìn)行測(cè)試了
然而,第一個(gè)用例就翻車了,出現(xiàn)了亂碼,不過(guò)還好至少能有反應(yīng)了。繼續(xù)閱讀,發(fā)現(xiàn)下面有類似將字符進(jìn)行Base64編碼后再丟給工具進(jìn)行發(fā)送的例子如下:
但是很遺憾,我是Python3(Windows10)平臺(tái),于是得對(duì)這條命令進(jìn)行改造在pyton中寫(xiě)一個(gè)漢字轉(zhuǎn)base64編碼的方法即可:
一行搞定,接下來(lái)只要在需要發(fā)送中文的地方進(jìn)行如下調(diào)用即可
3.ABD常用命令
1.adb devices , 獲取設(shè)備列表及設(shè)備狀態(tài)
2.adb get-state , 獲取設(shè)備的狀態(tài)
設(shè)備的狀態(tài)有 3 鐘,device , offline , unknown
device:設(shè)備正常連接
offline:連接出現(xiàn)異常,設(shè)備無(wú)響應(yīng)
unknown:沒(méi)有連接設(shè)備
3.安裝卸載應(yīng)用程序
adb install 用于安裝
安裝成功,返回成功提示 “Success”;
安裝失敗,會(huì)返回以下:
INSTALL_FAILED_ALREADY_EXISTS
此時(shí)需要用 -r 參數(shù)來(lái)重新安裝。
INSTALL_FAILED_SIGNATURE_ERROR
應(yīng)用的簽名不一致,可能是發(fā)布版和調(diào)試版簽名不同所致。也有可能是沒(méi)卸載舊應(yīng)用導(dǎo)致。
INSTALL_FAILED_INSUFFICIENT_STORAGE
存儲(chǔ)空間不足,需要檢查設(shè)備存儲(chǔ)情況。
adb uninstall 用于卸載
adb uninstall 后面帶的是應(yīng)用的包名,而不是應(yīng)用名。
查看系統(tǒng)所有應(yīng)用的包名:
adb shell pm list packages –f
4.上傳、下載文件
adb push 命令將PC機(jī)上的文件推到 DLT-RK3288 機(jī)器上;
adb pull 命令將DLT-RK3288機(jī)器上的文件拉到PC機(jī)上;
例如:
adb push d:/new.txt /sdcard/
將D盤(pán)下new.txt文件 推到內(nèi)部存儲(chǔ)器
adb pull /sdcard/new.txt d:\
將DLT-RK3288 內(nèi)部存儲(chǔ)器根目錄下的new.txt 拉到D盤(pán)
5. adb shell pm list package
Package Manager , 可以用獲取到一些安裝在 Android 設(shè)備上得應(yīng)用信息
-s:列出系統(tǒng)應(yīng)用
-f:列出應(yīng)用包名及對(duì)應(yīng)的apk名及存放位置
6.adb shell
通過(guò)adb shell 命令,就可以進(jìn)入設(shè)備或者模擬器的shell環(huán)境了,在這個(gè)Linux shell中,我們就可以執(zhí)行各種Linux命令了。
如果只想執(zhí)行一條shell命令,就可以采用:adb shell [shell_command],在實(shí)際使用中,經(jīng)常與grep或findstr一起使用,起到過(guò)濾作用,查看自己需要的關(guān)鍵信息。
7. 常見(jiàn)命令:
如 ls, cd, rm, mkdir, touch, pwd, cp, mv, ifconfig, netstat, ping, ps, top等,進(jìn)入adb shell即可執(zhí)行,與linux相似.