Android13 串口控制是能wifi adb實現

Android13 串口控制是能wifi adb實現

文章目錄

    • 一、前言
    • 二、Android 串口控制是能wifi adb實現
      • 1、通過Settings屬性控制
      • 2、通過prop屬性控制
      • 3、wifi adb 對應的Settings屬性和prop屬性關系
        • (1)屬性監聽
        • (2)相關代碼位置
        • (3)wif_adb Settings屬性到prop屬性變化
    • 三、其他
      • 1、wifi adb 使能小結
      • 2、設置usb debug模式開啟
      • 3、wifi adb 的Settings和prop屬性使用技巧
        • (1)通過prop屬性關鍵字adb查看和設置 wifi adb 使能
        • (2)通過Settings屬性關鍵字adb查看和設置 wifi adb 使能
      • 4、Android 13 wifi adb設置固定端口解決
      • 5、Android13 網絡 Adb 默認開啟

一、前言

Android 系統開發初期調試,一般有串口功能調試,但是可能沒有adb功能。

adb功能比串口調試方便一些,比如可以直接傳輸文件,定向打印日志到電腦,投屏,安裝電腦中的apk等功能。

分析還是比較詳細的,有需要的可以收藏看看。目前網上是沒有詳細分析的文章的。

二、Android 串口控制是能wifi adb實現

adb 功能,必須要開啟usb 模式,我這里開發的項目都是默認開啟usb模式的。

1、通過Settings屬性控制

settings put global adb_wifi_enabled 1//獲取adb屬性,1 表示開啟,0表示關閉
settings get global adb_wifi_enabled 

這個方式有一定的限制,wifi未連接的情況,設置這個屬性會失敗;

其實是代碼中檢測到屬性變化后,還好判斷wifi是否在連接狀態,

如果沒有連接wifi,就會設置屬性為0,并且關閉adb。

2、通過prop屬性控制

控制wifi adb 的端口屬性:

setprop persist.adb.tls_server.enable 1
//查詢當前adb prop屬性,1表示開啟,0 表示關閉
getprop persist.adb.tls_server.enable

通過這個方法不僅可以是能wifi adb,并且還可以是能 有線網adb,

設置這個屬性后,即使是能了adb,但是wifi adb settings屬性還是 0,Settings設置界面顯示wifi adb 還是關閉的

Android 13 以后,wifi adb的端口后默認是隨機生成的,可以使用命令查詢端口號:

//查詢wifi adb 端口號
getprop service.adb.tls.port//查詢示例,獲取到5位隨機數:
130|console:/dev # getprop service.adb.tls.port
42963
console:/dev # 

連接wifi adb 命令: adb connect 192.168.XXX.XXX:12345

3、wifi adb 對應的Settings屬性和prop屬性關系

(1)屬性監聽

不管是Settings屬性還是prop屬性,系統代碼中都有進行監聽。

adb_wifi Settings 屬性是在 AdbService.java里面有監聽

adb_wifi prop屬性是在adb_wifi.cpp代碼里面監聽。

(2)相關代碼位置
//AdbService.java 代碼位置
framework\base\services\core\java\com\android\server\adb\AdbService.java
//adb_wifi.cpp 代碼位置
packages\modules\adb\daemon\adb_wifi.cpp
(3)wif_adb Settings屬性到prop屬性變化

過程:

AdbService --> IAdbManager--> adb_wifi.cpp

上層AdbService 中wifi_adb情況改變,是會調用到底層adb_wifi.cpp;

但是如果底層adb_wifi.cpp中 wifi_adb情況改變,是不會通知到AdbService;

所以具體是能wifi adb的其實是在 adb_wifi.cpp 代碼或者再往下的邏輯。

這個也是為啥直接設置prop屬性就能wifi adb生效的原因。

三、其他

1、wifi adb 使能小結

相關屬性和命令:

//Settings 設置wifi adb 使能
settings put global adb_wifi_enabled 1//獲取adb屬性,1 表示開啟,0表示關閉
settings get global adb_wifi_enabled //prop 設置wifi adb 使能
setprop persist.adb.tls_server.enable 1
//查詢當前adb prop屬性,1表示開啟,0 表示關閉
getprop persist.adb.tls_server.enable//獲取wifi adb端口號,
getprop service.adb.tls.port

wifi adb 使能的前提是需要usb開啟的,也就是要開啟usb debug模式。

2、設置usb debug模式開啟

settings put global adb_enabled 1
//查看usb debug 模式
settings get global adb_enabled

prop相關屬性,沒研究過,不做介紹。

3、wifi adb 的Settings和prop屬性使用技巧

Settings和prop屬性不想記憶,或者記不住怎么辦?

其實這wifi adb 屬性,只要記住 “adb” 這三個字母關鍵字就行了,如果這三個字母都記不住,那么耶穌也幫不了你

(1)通過prop屬性關鍵字adb查看和設置 wifi adb 使能
console:/dev # 
console:/dev # getprop | grep adb //1、查詢adb prop相關屬性
[init.svc.adbd]: [running]
[init.svc_debug_pid.adbd]: [646]
[persist.adb.tls_server.enable]: [0] //2、wifi adb 開啟標識,默認為關閉,沒有端口號值
[persist.adb.wifi.guid]: [adb-f098ca85666478d6-7W3OgQ]
[persist.skg.adb.open]: [1]
[persist.sys.usb.config]: [adb]
[ro.boottime.adbd]: [8656585754]
[sys.rkadb.root]: [0]
[sys.usb.config]: [adb]
[sys.usb.state]: [adb]
console:/dev # setprop persist.adb.tls_server.enable 1  //3、設置adb 開啟的prop屬性
console:/dev # 
console:/dev # 
console:/dev # getprop | grep adb  //4、查詢adb prop相關屬性                                 
[init.svc.adbd]: [running]
[init.svc_debug_pid.adbd]: [646]
[persist.adb.tls_server.enable]: [1] //5、wifi adb 開啟標識
[persist.adb.wifi.guid]: [adb-f098ca85666478d6-7W3OgQ]
[persist.skg.adb.open]: [1]
[persist.sys.usb.config]: [adb]
[ro.boottime.adbd]: [8656585754]
[service.adb.tls.port]: [42963] //6、wifi adb 端口號
[sys.rkadb.root]: [0]
[sys.usb.config]: [adb]
[sys.usb.state]: [adb]

上面命令的關鍵字就是:getprop、setprop、adb、enable、port

這些關鍵字還是比較好記憶的。

(2)通過Settings屬性關鍵字adb查看和設置 wifi adb 使能

Settings 屬性其實也是可以模糊搜索的

130|console:/ # settings list global | grep adb //1、查詢adb Settings相關屬性
adb_enabled=1        //adb debug模式
adb_wifi_enabled=0   //wifi adb模式
console:/ # 
console:/ # settings put global adb_wifi_enabled 1 //2、設置 adb Settings相關屬性 
console:/ # 
console:/ # 
console:/ # settings list global | grep adb   //3、查詢adb Settings相關屬性                
adb_enabled=1
adb_wifi_enabled=1
console:/ # 

上面命令的關鍵字就是:settings、 list 、global、adb。

如果是Android13 或者更新的版本,還需要查看adb 端口號的prop屬性的值。

值得注意的是Settings 使能adb ,前提是wifi必須要連接成功,并且是在adb debug模式。

2024-07-01更正一下:
系統燒錄后,未設置過wifi adb 的情況,是無法通過 getprop | grep adb 和 settings list global | grep adb 查詢到wifi adb 關鍵字的,默認是未設置的值,所以看不到默認值,如果是系統第一次使用adb還是要查詢或者記憶一下關鍵屬性。

4、Android 13 wifi adb設置固定端口解決

詳細內容:

https://blog.csdn.net/wenzhi20102321/article/details/131056174

上面的文章寫得比較早,對過程了解不是很熟悉,其實port屬性是沒必要設置的。

下面這個文章寫得詳細一些。

5、Android13 網絡 Adb 默認開啟

主要修改:

packages\modules\adb\daemon\adb_wifi.cpp
framework\base\services\core\java\com\android\server\adb\AdbDebuggingManager.java//修改前面兩個文件就可以實現adb了,后面的文件試輔助分析的。//雖然 SettingsProvider 也有加載 Settings屬性 Settings.Global.ADB_WIFI_ENABLED ,
//但是 prop那個屬性更優先,所以可以不用考慮這里默認情況
framework\base\packages\SettingsProvider\src\com\android\providers\settings\SettingsProvider.java//增加分析定位文件,系統服務啟動后會判斷 屬性persist.adb.tls_server.enable 進行相關操作
//如果屬性設置不生效,可以在這里添加打印日志查看過程
framework\base\services\core\java\com\android\server\adb\AdbService.java

詳細內容:

https://blog.csdn.net/wenzhi20102321/article/details/132382549

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/38745.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/38745.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/38745.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

優化數據庫字段使用位運算-php語言示例

背景:一個會員有三個狀態,A、B、C,其中一個人可以為 A、B、C、AB;之前數據表結構加了三個字段is_a、is_b、is_c; 本人實在不想這樣粗糙的實現需求,遂決定用位運算優化。 上代碼: 位運算可以用來處理狀態值…

探索SOLIDWORKS 2024設計增強功能

隨著技術的不斷進步和市場的日益競爭,工程設計和制造行業對于快捷、準確和創新的工具需求日益增長。SOLIDWORKS作為3D CAD設計軟件,一直致力于為用戶提供更強大、更便捷的設計工具。SOLIDWORKS 2024的發布,再次證明了其在設計增強功能方面的持…

使用 Amazon Bedrock Converse API 簡化大語言模型交互

本文將介紹如何使用 Amazon Bedrock 最新推出的 Converse API,來簡化與各種大型語言模型的交互。該 API 提供了一致的接口,可以無縫調用各種大型模型,從而消除了需要自己編寫復雜輔助功能函數的重復性工作。文中示例將展示它相比于以前針對每…

如何在Windows上使用Docker搭建PHP開發環境

前言 在本地搭建開發環境我好像沒幾年就要折騰一次,因為本地開發電腦使用的是windows,早些年的時候,用過很多類似WAMP之類的東西,但最終都有或多或少不滿意的地方,前兩年的時候,還折騰過WSL,但…

批量文件名修改軟件:一鍵解決同一編碼多型號文件分類與命名難題,高效管理文件

在數字化時代,圖片文件已經成為我們工作中不可或缺的一部分。然而,當面對成百上千個同一編碼下不同型號的圖片文件時,如何快速、準確地進行分類和命名,成為了許多職場人士頭疼的問題。現在,我們為您帶來了一款神奇的批…

MyBatisPlus 基礎數據表的增刪改查 入門 簡單查詢

MyBatisPlus MyBatisPlus(簡稱MP)是一個基于MyBatis的增強工具庫,簡化了MyBatis的開發,提供了很多實用的功能和特性,如自動生成SQL、通用CRUD操作、分頁插件、條件構造器、代碼生成器等。它不僅簡化了開發過程&#x…

2024海亮日記

寫在前面:長文預警 20240617 聽說要去海亮,不考(補考)期末考試,于是進行一個停課的辦理,第一次進入410,被逆天的配置和氣氛所震驚 發誓這回去HL一定要有好效果,于是制定了詳細的計…

golang 未指定類型interface{} 類型的 int類型數據json.Unmarshal 解碼后變成float64類型問題解決方法

golang內置的json反序列化方法,默認情況下對應 未指定類型interface{} 類型的的 int類型數據在經過Unmarshal解碼后 int類型的數據會變成 float64類型。 因為json里面默認將interface{}類型的int數據都當做float64來處理。 解決方法很簡單,就是使用自定…

優盤有盤符顯示0字節:故障解析與數據恢復策略

一、優盤有盤符顯示0字節現象描述 在使用優盤的過程中,我們有時會遇到一種令人困惑的情況:插入優盤后,電腦能正常識別到優盤的盤符,但當我們嘗試訪問其中的數據時,卻發現優盤的容量顯示為0字節,無法讀取或…

快速掌握MyBatis

MyBatis 是一個流行的 Java 持久層框架,它提供了一種半自動的 SQL 映射方式,使得開發者能夠更加靈活地編寫 SQL 語句,同時避免了傳統 JDBC 代碼的冗余和復雜性。下面進行簡要概述: MyBatis 快速掌握 核心概念:理解 My…

8.1 Firmware Update Process

8.1 Firmware Update Process 通過reset激活firmware 更新的過程: host發出firmare下載命令,將FW image下載到控制器。FW image可能有多個部分要下載,因此FW image 下載命令中指定正在下載的FW image的每個部分的偏移量。FW image 下載命令…

Sui創始團隊在競速環節中的快問快答

在Sui Basecamp活動期間,Sui區塊鏈的最初貢獻者在Oracle紅牛賽車模擬器上展示了他們的技術能力,在駕駛圈時回答了有關Sui的問題。 Evan Cheng(又名Revvin’ Evan)在解釋Mysticeti創下區塊鏈最終性記錄的同時保持著他的駕駛線路。…

Java | Leetcode Java題解之第200題島嶼數量

題目&#xff1a; 題解&#xff1a; class Solution {void dfs(char[][] grid, int r, int c) {int nr grid.length;int nc grid[0].length;if (r < 0 || c < 0 || r > nr || c > nc || grid[r][c] 0) {return;}grid[r][c] 0;dfs(grid, r - 1, c);dfs(grid, r…

go Channel原理 (三)

Channel 設計原理 不要通過共享內存的方式進行通信&#xff0c;而是應該通過通信的方式共享內存。 在主流編程語言中&#xff0c;多個線程傳遞數據的方式一般都是共享內存。 Go 可以使用共享內存加互斥鎖進行通信&#xff0c;同時也提供了一種不同的并發模型&#xff0c;即通…

【嵌入式——FreeRTOS】任務

【嵌入式——FreeRTOS】任務 任務創建和刪除動態方式創建任務靜態方式創建任務 刪除任務任務切換調度器任務切換流程 任務掛起任務恢復相關API函數 任務創建和刪除 動態方式創建任務 任務的任務控制塊以及任務的棧空間所需的內存&#xff0c;均由freeRTOS從freeRTOS管理的堆中…

c#asp.net中字典的使用

字典是一個鍵值對&#xff0c;可以用來保存數據&#xff0c;再查詢&#xff1b; 下面是一個案例&#xff1a;依據多個學號查詢多個學生的姓名&#xff0c;只能到數據庫查詢一次數據&#xff01;&#xff01;&#xff01; 先在數據庫查詢學號對應的學生&#xff0c;把數據保存在…

mysql8.0.19安裝zip版本

下載地址https://downloads.mysql.com/archives/community/ 下載版本 下載后解壓&#xff0c;不包括data 和my.ini文件。其中data 文件是自動生成的【mysqld --initialize --console】&#xff0c;my.ini需要自己編寫設置。 新建my.ini文件 需要自己設置 basedirG:\soft\mysql…

內網服務器時間校正

新購買的云服務器發現內網機器和可以訪問外網的機器時間慢了三分鐘&#xff0c;導致有些訪問會報錯&#xff0c;那么我們配置一下ntp校正一下時間。外網配置起來比較簡單&#xff0c;直接下載ntp執行校正命令即可。 比當前時間慢了三分鐘 注意當前服務器是可以訪問外網的機器這…

【gitee使用教程】(創建項目倉庫并上傳代碼簡易版)

gitee使用教程&#xff0c;創建項目倉庫并上傳代碼簡易版 1.在碼云上創建一個倉庫2.將代碼克隆到本地1.復制倉庫地址2.找到你想要放置的文件位置&#xff0c;右鍵點擊更多選項&#xff0c;選擇Git Clone3.將復制的倉庫地址填入URL 3. IDEA結合GIT和Gitee的簡單使用idea需要識別…

【python】最新版抖音s逆向拿到數據,非常詳細教程(附完整代碼)

?? 歡迎大家來到景天科技苑?? ???? 養成好習慣,先贊后看哦~???? ?? 作者簡介:景天科技苑 ??《頭銜》:大廠架構師,華為云開發者社區專家博主,阿里云開發者社區專家博主,CSDN全棧領域優質創作者,掘金優秀博主,51CTO博客專家等。 ??《博客》:Python全…