Android13 网络 Adb 默认开启
Android 13 网络 Adb 默认开启
文章目录
- Android 13 网络 Adb 默认开启
- 一、前言
- 二、默认adb 代码实现
- 1、修改的目录:
- 2、具体修改:
- (1)在XXX_device.mk 添加属性
- (2)设置固定端口号
- (3)去除判断网络后,设置 ADB_WIFI_ENABLED 为 0 的代码
- 三、日志查看
- 四、其他
- 1、adb 相关属性
- (1) prop属性:persist.adb.tls_server.enable
- (2)prop属性:service.adb.tls.port
- (3)Settings属性:Settings.Global.ADB_WIFI_ENABLED "adb_wifi_enabled"
- 2、AdbService.java、AdbDebuggingManager.java、adb_wifi.cpp 的关系
- (1) adb_wifi 是底层init/cpp 启动的服务
- (2)AdbService启动时机
- (3)ramework\base\core\java\android\debug\IAdbManager.aidl
一、前言
通过代码分析发现Android13 上对 网络adb 进行了限制!
()Android13原生代码要求:必现连接上某个wifi,才能进行adb ,并且切换wifi或者关闭wifi都是会停止adb。
如果要做成Android11 或者之前一样,设备连接WiFi/有线网络后电脑可以直接进行adb连接,就要对系统代码进行适配修改。
()关键: 1、mk 设置系统属性:persist.adb.tls_server.enable=1 2、写死端口号 5555 3、注释若干判断Wifi情况停止adb的代码
之前以为设置端口号和persist.adb.tls_server.enable 属性就ok了,但是还是有些小bug,还是要完全研究一遍具体流程。
二、默认adb 代码实现
1、修改的目录:
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
2、具体修改:
(1)在XXX_device.mk 添加属性
persist.adb.tls_server.enable = 1
手动添加,也是会记忆的!
(2)设置固定端口号
+++ b/release/packages/modules/adb/daemon/adb_wifi.cpp @@ -160,7 +160,8 @@ static void enable_wifi_debugging() { if (sTlsServer != nullptr) { delete sTlsServer; } - sTlsServer = new TlsServer(0); + // default port 0 means random,change to 5555 ,by liwenzhi + sTlsServer = new TlsServer(5555); if (!sTlsServer->Start()) { LOG(ERROR)
The End