基于adbkit的android設(shè)備管理(精簡(jiǎn)版stf)
起因
是看到stf(設(shè)備管理平臺(tái))有開源了adbkit這個(gè)精簡(jiǎn)的adb交互庫,又覺得部署stf太麻煩了,就想著用adbkit實(shí)現(xiàn)一個(gè)精簡(jiǎn)的設(shè)備管理,用于自動(dòng)化測(cè)試
思路
先引入adbkit
前期首先這是一個(gè)node項(xiàng)目,先引入adbkit
npm install adbkit --save
監(jiān)聽設(shè)備
把多個(gè)android手機(jī)插入同一臺(tái)電腦,如果每次都用adb devices去查詢,未免有些太過麻煩,而adbkit提供了監(jiān)聽的方法
const client = AdbInteraction.getInstance().getClient() client.trackDevices().then((tracker) => { tracker.on("add", async (device) => { console.log(device.id) } }
其中的device.id就是設(shè)備的serial號(hào)(即adb devices中的id)
設(shè)備管理
當(dāng)設(shè)備連接后,可以在監(jiān)聽事件中對(duì)設(shè)備分配一個(gè)端口,并綁定端口
const client = AdbInteraction.getInstance().getClient() const bridge = {} client.trackDevices().then((tracker) => { tracker.on("add", async (device) => { // 指定一個(gè)端口,或者可以寫一個(gè)方法去分配 const availablePort = 3000 // 創(chuàng)建一個(gè)adb usb連接 bridge[serial] = client.createTcpUsbBridge(serial, { auth: () => Promise.resolve() }) // 綁定端口 bridge[serial].listen(availablePort).on("error", (e) => { console.log("err" + e) }) // 設(shè)備信息寫入數(shù)據(jù)庫 // 如serial號(hào),port號(hào) } }
這里我們假設(shè)分配3001端口給剛剛連接到的設(shè)備,直接執(zhí)行命令
adb connect ip:3001
這里的ip是插著android設(shè)備的那臺(tái)主機(jī),這樣我們就成功連接了設(shè)備
管理多個(gè)設(shè)備
按照這個(gè)思路,我們可以同時(shí)開發(fā)出一套服務(wù),通過調(diào)用接口來查詢當(dāng)前連接著的設(shè)備
我們選用koa2的框架
git clone https://github.com/javieraviles/node-typescript-koa-rest.git
然后進(jìn)行這個(gè)項(xiàng)目的教學(xué)進(jìn)行常規(guī)部署
npm install npm run watch-server
在controller層定義接口(有點(diǎn)像spring)
我們可以從controller定義一個(gè)接口,去從數(shù)據(jù)庫中讀取我們剛才保存過的數(shù)據(jù)
@request("get", "/devices") @summary("Find devices") public static async deviceList(ctx: any): Promise<void> { console.log(ctx.query.biz) ctx.status = 200; // 這里的數(shù)據(jù)來源于數(shù)據(jù)庫,可自定義實(shí)現(xiàn) ctx.body = DeviceDbManager.getInstance().fetchDeviceList(); }
我們可以返回這樣的格式
[ { "serial": "#####", "ip": "192.168.x.x", "port": 3001, "connStatus": 1, "updateTime": "2023-08-31T04:53:55.113Z" } ]
至此就可以實(shí)現(xiàn)一個(gè)簡(jiǎn)單的設(shè)備管理,查詢
也可以對(duì)設(shè)備進(jìn)行借用、釋放等操作
完整的項(xiàng)目也在這個(gè)地址分享 https://github.com/sonar-su/android-device-manager
以上就是基于adbkit的android設(shè)備管理(精簡(jiǎn)版stf)的詳細(xì)內(nèi)容,更多關(guān)于adbkit android設(shè)備管理的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- Android設(shè)備adb連接后顯示device unauthorized解決方案
- android中的adb命令學(xué)習(xí)
- 超詳細(xì)的Android開發(fā)調(diào)試工具ADB命令及安裝介紹
- android中adb命令最全總結(jié)
- 詳解android adb常見用法
- adb通過wifi連接android設(shè)備流程解析
- Android adb命令中pm工具的作用及用法說明
- Android adb安裝apk時(shí)提示Invalid APK file的問題
- Android user版通過adb_enable開啟adb 調(diào)試 不提示對(duì)話框的流程分析
- Android PC端用ADB抓取指定應(yīng)用日志實(shí)現(xiàn)步驟
- Android 實(shí)現(xiàn)永久性開啟adb 的root權(quán)限
- 關(guān)于ADB的Android Debug Bridge(安卓調(diào)試橋)那些事
- Android客制化adb shell進(jìn)去后顯示shell@xxx的標(biāo)識(shí)
- android設(shè)置adb自帶screenrecord錄屏命令
- Android 修改adb端口的方法
- Android中ADB命令用法大結(jié)局
- Android開啟ADB網(wǎng)絡(luò)調(diào)試方法
- Android ADB簡(jiǎn)介、安裝及使用詳解
相關(guān)文章
android實(shí)現(xiàn)指紋識(shí)別功能
這篇文章主要介紹了android指紋識(shí)別功能,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-09-09Android 指紋識(shí)別詳解及實(shí)現(xiàn)方法
本文主要介紹Android 指紋識(shí)別的知識(shí),這里整理了詳細(xì)的資料和簡(jiǎn)單實(shí)現(xiàn)代碼,有開發(fā)這部分的朋友可以參考下2016-09-09解決Android Studio一直停留在MyApplication:syncing的問題
這篇文章主要介紹了Android Studio一直停留在MyApplication:syncing的完美解決方案,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-10-10Android獲取點(diǎn)擊屏幕的位置坐標(biāo)
這篇文章主要為大家詳細(xì)介紹了Android獲取點(diǎn)擊屏幕的位置坐標(biāo),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-05-05詳解Android studio實(shí)現(xiàn)語音轉(zhuǎn)文字功能
這篇文章主要介紹了如何通過Android studio調(diào)用科大訊飛的語音轉(zhuǎn)文字功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2022-03-03Android中TextView動(dòng)態(tài)設(shè)置縮進(jìn)距離的方法
項(xiàng)目需求如果在項(xiàng)目中第一行文字需要添加布局的情況我們應(yīng)該怎么做呢,經(jīng)過一番考慮和查找我最終選擇了縮進(jìn)的方式解決這個(gè)問題,這篇文章主要給大家介紹了關(guān)于Android中TextView動(dòng)態(tài)設(shè)置縮進(jìn)距離的相關(guān)資料,需要的朋友可以參考下2022-04-04