Python Android 自動化 1/10 - ADB
1. ADB是什么
????adb的全稱為Android Debug Bridge杉允,就是起到調(diào)試橋的作用恰矩。通過adb我們可以在Eclipse中方便通過DDMS來調(diào)試Android程序熟尉,說白了就是debug工具值骇。adb的工作方式比較特殊,采用監(jiān)聽Socket TCP 5554等端口的方式讓IDE和Qemu通訊弊琴,默認(rèn)情況下adb會daemon相關(guān)的網(wǎng)絡(luò)端口,所以當(dāng)我們運(yùn)行Eclipse時(shí)adb進(jìn)程就會自動運(yùn)行驱闷。
????adb是android sdk里的一個(gè)工具, 用這個(gè)工具可以直接操作管理android模擬器或者真實(shí)的android設(shè)備(如G1手機(jī)). 它的主要功能有:
????* 運(yùn)行設(shè)備的shell(命令行)
????* 管理模擬器或設(shè)備的端口映射
????* 計(jì)算機(jī)和設(shè)備之間上傳/下載文件
????* 將本地apk軟件安裝至模擬器或android設(shè)備
? ??ADB是一個(gè) 客戶端-服務(wù)器端 程序, 其中客戶端是你用來操作的電腦, 服務(wù)器端是android設(shè)備.
????摘自:百度百科?https://baike.baidu.com/item/ADB/23427792
2. ADB怎么安裝
? ? ADB是安裝Android Studio SDK后附帶的工具耻台,不需要另外安裝,官方下載地址:https://developer.android.google.cn/studio/
? ? 最低限度只需要以下三個(gè)文件空另,可以拷貝到Python腳本所在目錄盆耽,或者添加到系統(tǒng)路徑中:
? ??adb.exe
? ??AdbWinApi.dll
????AdbWinUsbApi.dll
? ? 參考:https://jingyan.baidu.com/article/7f41ecec349c0f593d095c84.html
3. ADB能干什么
? ? adb 可以做到的事情,包括不限于:
????列出所有設(shè)備信息扼菠;
? ??通過TCP連接目標(biāo)設(shè)備摄杂、端口轉(zhuǎn)發(fā);
? ? 安裝 / 卸載 / 啟動 應(yīng)用循榆;
? ? 推送文件到設(shè)備 / 下拉文件到本地析恢;
? ? 查看 設(shè)備信息 / 系統(tǒng)日志;
????發(fā)送命令冯痢;
????...
? ? 參考:http://www.reibang.com/p/698a24d758c7
? ? ? ? ? ? ? ?http://www.reibang.com/p/860bc2bf1a6a
? ? 這次主要用到的:
? ? ? ? 清理ADB:?adb kill-server(啟動ADB前需要清理之前啟動過的進(jìn)程氮昧,否則出錯)框杜;
????????啟動ADB: adb start-server浦楣;
? ? ????點(diǎn)擊屏幕: adb shell input tap 50 100 (點(diǎn)擊屏幕上50,100坐標(biāo)咪辱,具體跟屏幕尺寸及分辨率相關(guān))振劳;
????????滑動屏幕: adb shell input swipe 50 100 50 200 (下滑屏幕,從50油狂,100坐標(biāo)滑到50历恐,200坐標(biāo));
? ? ? ? 屏幕截圖:?adb shell screencap -p /sdcard/screen.png (截圖保存為screen.png)专筷;
? ? ? ? 下拉文件: adb pull /sdcard/screen.png (把screen.png拉回PC)弱贼;
? ? ? ? 輸入文字: adb shell input text? 12345? (向安卓設(shè)備輸入12345,只能是英文字母或數(shù)字磷蛹,中文要另外處理)吮旅;
? ? ? ? 輸入中文: 先安裝這個(gè)開源輸入法: https://github.com/senzhk/ADBKeyBoard (據(jù)說還能輸入韓文日文等等,但我沒試過)味咳;
? ? ? ? ? ? ? ? ? ? ? ? ? ?設(shè)置安卓當(dāng)前輸入法:adb shell ime set com.android.adbkeyboard/.AdbIME庇勃;
? ? ? ? ? ? ? ? ? ? ? ? ? ?輸入中文:adb shell am broadcast -a ADB_INPUT_TEXT --es 中文字符串;
? ? ? ? 靜音:? ? ? ? adb shell input keyevent 164槽驶;
? ? ? ? 返回按鈕:?adb shell input keyevent 4责嚷;
? ? ? ? 啟動應(yīng)用:?adb shell am start -n 應(yīng)用名稱/activity名稱(如何找到一個(gè)App的應(yīng)用名稱和Activity名稱,后續(xù)會展開說)掂铐;
? ? ? ? 退出應(yīng)用:?adb shell pm clear 應(yīng)用名稱