网站建设平台卜先明,专门做网站制作的公司,wordpress时区设置,网站效果图制作Android 13 网络 Adb 默认开启 文章目录 Android 13 网络 Adb 默认开启一、前言二、默认adb 代码实现1、修改的目录#xff1a;2、具体修改#xff1a;#xff08;1#xff09;在XXX_device.mk 添加属性#xff08;2#xff09;设置固定端口号#xff08;3#xff09;去…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.enable2prop属性service.adb.tls.port3Settings属性Settings.Global.ADB_WIFI_ENABLED adb_wifi_enabled 2、AdbService.java、AdbDebuggingManager.java、adb_wifi.cpp 的关系1 adb_wifi 是底层init/cpp 启动的服务2AdbService启动时机3ramework\base\core\java\android\debug\IAdbManager.aidl 一、前言
通过代码分析发现Android13 上对 网络adb 进行了限制 Android13原生代码要求必现连接上某个wifi才能进行adb 并且切换wifi或者关闭wifi都是会停止adb。
如果要做成Android11 或者之前一样设备连接WiFi/有线网络后电脑可以直接进行adb连接就要对系统代码进行适配修改。 关键
1、mk 设置系统属性persist.adb.tls_server.enable1
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.java2、具体修改
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 liwenzhisTlsServer new TlsServer(5555);if (!sTlsServer-Start()) {LOG(ERROR) Failed to start TlsServer;delete sTlsServer;
3去除判断网络后设置 ADB_WIFI_ENABLED 为 0 的代码
一个是初始化的时候判断另外一个是监听网络变化的时候判断都去掉就行。 b/release/frameworks/base/services/core/java/com/android/server/adb/AdbDebuggingManager.java
public class AdbDebuggingManager {case MSG_ADBDWIFI_ENABLE: {if (mAdbWifiEnabled) {break;}//not to check network state ,change by liwenzhi //1去除下面一大段判断网络和监听网络的代码/** AdbConnectionInfo currentInfo getCurrentWifiApInfo();if (currentInfo null) {Settings.Global.putInt(mContentResolver,Settings.Global.ADB_WIFI_ENABLED, 0); //关闭 adb wifibreak;}if (!verifyWifiNetwork(currentInfo.getBSSID(),currentInfo.getSSID())) {// This means that the network is not in the list of trusted networks.// Well give user a prompt on whether to allow wireless debugging on// the current wifi network.Settings.Global.putInt(mContentResolver,Settings.Global.ADB_WIFI_ENABLED, 0);break;}setAdbConnectionInfo(currentInfo); **///no listener network change for disable adb_wifi,by liwenzhi/** IntentFilter intentFilter new IntentFilter(WifiManager.WIFI_STATE_CHANGED_ACTION);intentFilter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);mContext.registerReceiver(mBroadcastReceiver, intentFilter); **/SystemProperties.set(WIFI_PERSISTENT_CONFIG_PROPERTY, 1);case MSG_ADBDWIFI_DISABLE:if (!mAdbWifiEnabled) {break;}mAdbWifiEnabled false;setAdbConnectionInfo(null);//no need unregisterReceiver, because no listener network,chenge by liwenzhi//2监听已经注释不需要再注销监听//mContext.unregisterReceiver(mBroadcastReceiver);case MSG_ADBWIFI_ALLOW:if (mAdbWifiEnabled) {break;}String bssid (String) msg.obj;boolean alwaysAllow msg.arg1 1;if (alwaysAllow) {mAdbKeyStore.addTrustedNetwork(bssid);}// Lets check again to make sure we didnt switch networks while verifying// the wifi bssid.//no to check network ,change by liwenzhi //3不需要判断网络/** AdbConnectionInfo newInfo getCurrentWifiApInfo();if (newInfo null || !bssid.equals(newInfo.getBSSID())) {break;}setAdbConnectionInfo(newInfo); **/Settings.Global.putInt(mContentResolver,Settings.Global.ADB_WIFI_ENABLED, 1);//no listener network change for disable adb_wifi,by liwenzhi //4不需要要监听网络变化/** IntentFilter intentFilter new IntentFilter(WifiManager.WIFI_STATE_CHANGED_ACTION);intentFilter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);mContext.registerReceiver(mBroadcastReceiver, intentFilter); **/SystemProperties.set(WIFI_PERSISTENT_CONFIG_PROPERTY, 1);
三、日志查看
日志查看主要是AdbService.java、AdbDebuggingManager.java、adb_wifi.cpp AdbService 的日志默认是关闭模式的需要设置成true并且如果要看里面数据具体值相关属性的日志需要自己添加打印出来。 AdbDebuggingManager 是有相关异常过程日志的 adb_wifi 该文件的打印TAG 是adbd, 不管有没有打开adb整个系统是一直有这个 adbd 的相关打印的每秒大概有十几行日志
这里查看打印相关日志多个关键字的信息命令 logcat | grep -E lwz|AdbService|changed to|adb wifi|AdbDebuggingManager
lwz 是我自己加的关键字。
通过日志查看正常开启的情况大概日志过程是 01-01 08:00:22.756 496 511 I adbd : Waiting for persist.adb.tls_server.enable1
08-16 15:13:50.123 762 762 D SystemServerTiming: StartAdbService
08-16 15:13:51.528 762 762 D AdbService: systemReady //修改 DEBUG true 才看到的日志
08-16 15:13:51.528 762 762 D AdbService: lwz systemReady persist.adb.tls_server.enable 1 //自己加的日志打印
08-16 15:13:51.528 762 762 D AdbService: lwz systemReady mIsAdbWifiEnabled true //自己加的日志打印确认查看服务启动是否打开 adb
08-16 15:13:58.993 762 799 D AdbService: setAdbEnabled(true), mIsAdbUsbEnabledtrue, mIsAdbWifiEnabledtrue, transportType0
08-16 15:13:58.994 762 762 D AdbService: lwz onChange shouldEnable true
08-16 15:13:58.995 762 799 D AdbService: setAdbEnabled(true), mIsAdbUsbEnabledtrue, mIsAdbWifiEnabledtrue, transportType1
08-16 15:13:59.015 762 802 D ActivityManagerTiming: OnBootPhase_1000_com.android.server.adb.AdbService$Lifecycle
08-16 15:13:59.016 762 802 V ActivityManagerTiming: OnBootPhase_1000_com.android.server.adb.AdbService$Lifecycle took to complete: 1ms
08-16 15:13:59.016 762 799 D AdbService: boot completed
08-16 15:13:59.033 496 511 I adbd : persist.adb.tls_server.enable changed to 1 //正常开启adb的日志
08-16 15:13:59.056 496 511 I adbd : adb wifi started on port 5555
08-16 15:13:59.058 496 511 I adbd : Waiting for persist.adb.tls_server.enable0
如果未屏蔽网络判断添加打印日志查看过程:
08-18 16:51:20.104 762 762 D SystemServerTiming: OnBootPhase_550_com.android.server.adb.AdbService$Lifecycle
08-18 16:51:20.104 762 762 D AdbService: systemReady
08-18 16:51:20.105 762 762 D AdbService: lwz systemReady mIsAdbWifiEnabled true //这里说明prop 属性已经设置了
08-18 16:51:26.248 762 798 I AdbDebuggingManager: Not connected to any wireless network. Not enabling adbwifi. //这里提示没网络会执行关闭adb
08-18 16:51:26.586 762 762 D AdbService: lwz onChange shouldEnable false
08-18 16:51:27.411 762 762 D AdbService: lwz onChange shouldEnable false
08-18 16:51:27.971 762 798 D AdbService: setAdbEnabled(true), mIsAdbUsbEnabledtrue, mIsAdbWifiEnabledtrue, transportType0
08-18 16:51:27.972 762 798 D AdbService: setAdbEnabled(false), mIsAdbUsbEnabledtrue, mIsAdbWifiEnabledtrue, transportType1 //关闭adb
08-18 16:51:27.973 510 517 I adbd : persist.adb.tls_server.enable changed to 0 //到这里 persist.adb.tls_server.enable 属性又变成了 0
08-18 16:51:27.973 510 517 I adbd : adb wifi stopped
08-18 16:51:27.981 762 798 D AdbService: Broadcasting enable false, type 1
这个也是为啥配置了那个 persist.adb.tls_server.enable 1 属性后系统启动发现获取属性还是0 并且wifi adb未打开。
四、其他
1、adb 相关属性
1 prop属性persist.adb.tls_server.enable
系统启动后AdbService 会判断该属性决定后续是否执行开启adb。
2prop属性service.adb.tls.port
该属性是 adb_wifi.cpp 使能adb的时候设置的. 后续让你知道它的端口号。 所以设置这个属性值是没有意义的。 在 adb_wifi.cpp初始化 TlsServer 设置固定端口 5555那么这个属性一直就是 5555.
3Settings属性Settings.Global.ADB_WIFI_ENABLED “adb_wifi_enabled”
同时在 AdbService 是有监听 这个Global 属性的变化关联上 AdbDebuggingManager 设置 adb 使能。
查询和设置命令 //查询属性
setttings get global adb_wifi_enabled
//设置属性 0/1
setttings put global adb_wifi_enabled 1
该属性是系统上层设置的一个值原本主要用来记录adb wifi 的开关状态。 因为Android13 会判断当前wifi是否是信任的切换wifi后设置这个属性是无效的。
但是如果修改了上面去除网络限制对策后直接设置Global属性是会正常开关adb的。
如果未去除网络限制对策你会发现 adb_wifi_enabled 无法设置成1 因为 AdbDebuggingManager 在开启的是会还会判断网络情况如果没有网络会设置为 0 .
2、AdbService.java、AdbDebuggingManager.java、adb_wifi.cpp 的关系
1 adb_wifi 是底层init/cpp 启动的服务
具体哪里启动的暂不去研究 里面的日志是跑在比较前面的比SystemServer 更早。 同时也是具体能够使能 网络adb 的关键 也是为啥设置了 persist.adb.tls_server.enable1 能够直接使能网络adb的原因。 正常开启和关闭adb 是有相关日志的。
2AdbService启动时机
AdbService 是SystemServer 执行 startOtherServices 里面启动的服务。
AdbService extends IAdbManager.Stub //具体暴露接口可以看 IAdbManager
AdbDebuggingManager 是一个管理adbDebug的类在 AdbService 里面实例化其实就是分化了一下具体执行的代码。
很多无法进入adb wifi 的情况都是在AdbDebuggingManager 拒绝的并且重新设置了 Global属性 和 Prop 属性为0
3ramework\base\core\java\android\debug\IAdbManager.aidl
package android.debug;import android.debug.FingerprintAndPairDevice;
import android.debug.IAdbCallback;/*** Interface to communicate remotely with the {code AdbService} in the system server.** hide //隐藏的*/
interface IAdbManager {/*** Allow ADB debugging from the attached host. If {code alwaysAllow} is* {code true}, add {code publicKey} to list of host keys that the* user has approved.** param alwaysAllow if true, add permanently to list of allowed keys* param publicKey RSA key in mincrypt format and Base64-encoded*/void allowDebugging(boolean alwaysAllow, String publicKey);/*** Deny ADB debugging from the attached host.*/void denyDebugging();/*** Deny ADB wireless debugging on the connected network.*/void denyWirelessDebugging();/*** Returns true if device supports secure Adb over Wi-Fi.*/boolean isAdbWifiSupported();}
上面接口估计对开发者没啥用
适配了去除网络限制上面代码后就应用而言使用 Settings.Global.ADB_WIFI_ENABLED 控制和或者当前 网络adb状态最合适的。 虽然使用prop 属性也能生效但是系统应用Settings判断的是Settings.Global.ADB_WIFI_ENABLED的值是否为1会出现状态显示不同步的情况。 文章转载自: http://www.morning.wmyqw.com.gov.cn.wmyqw.com http://www.morning.fglth.cn.gov.cn.fglth.cn http://www.morning.nrfrd.cn.gov.cn.nrfrd.cn http://www.morning.nwcgj.cn.gov.cn.nwcgj.cn http://www.morning.rjznm.cn.gov.cn.rjznm.cn http://www.morning.dtnzk.cn.gov.cn.dtnzk.cn http://www.morning.wqpm.cn.gov.cn.wqpm.cn http://www.morning.prhfc.cn.gov.cn.prhfc.cn http://www.morning.neletea.com.gov.cn.neletea.com http://www.morning.pwmpn.cn.gov.cn.pwmpn.cn http://www.morning.yhrfg.cn.gov.cn.yhrfg.cn http://www.morning.jrsgs.cn.gov.cn.jrsgs.cn http://www.morning.bpmfz.cn.gov.cn.bpmfz.cn http://www.morning.jpnfm.cn.gov.cn.jpnfm.cn http://www.morning.fthcq.cn.gov.cn.fthcq.cn http://www.morning.nqwkn.cn.gov.cn.nqwkn.cn http://www.morning.nmyrg.cn.gov.cn.nmyrg.cn http://www.morning.qbnfc.cn.gov.cn.qbnfc.cn http://www.morning.phjyb.cn.gov.cn.phjyb.cn http://www.morning.rtlth.cn.gov.cn.rtlth.cn http://www.morning.krjyq.cn.gov.cn.krjyq.cn http://www.morning.kbbmj.cn.gov.cn.kbbmj.cn http://www.morning.jqzns.cn.gov.cn.jqzns.cn http://www.morning.wjrtg.cn.gov.cn.wjrtg.cn http://www.morning.wkws.cn.gov.cn.wkws.cn http://www.morning.ltrms.cn.gov.cn.ltrms.cn http://www.morning.wgdnd.cn.gov.cn.wgdnd.cn http://www.morning.hyjpl.cn.gov.cn.hyjpl.cn http://www.morning.easiuse.com.gov.cn.easiuse.com http://www.morning.jkcpl.cn.gov.cn.jkcpl.cn http://www.morning.ndhxn.cn.gov.cn.ndhxn.cn http://www.morning.lkrmp.cn.gov.cn.lkrmp.cn http://www.morning.jkcnq.cn.gov.cn.jkcnq.cn http://www.morning.wtcbl.cn.gov.cn.wtcbl.cn http://www.morning.chgmm.cn.gov.cn.chgmm.cn http://www.morning.jzxqj.cn.gov.cn.jzxqj.cn http://www.morning.qrqg.cn.gov.cn.qrqg.cn http://www.morning.zqzzn.cn.gov.cn.zqzzn.cn http://www.morning.fmtfj.cn.gov.cn.fmtfj.cn http://www.morning.dpsgq.cn.gov.cn.dpsgq.cn http://www.morning.eronghe.com.gov.cn.eronghe.com http://www.morning.iiunion.com.gov.cn.iiunion.com http://www.morning.dnzyx.cn.gov.cn.dnzyx.cn http://www.morning.bnlkc.cn.gov.cn.bnlkc.cn http://www.morning.yhsrp.cn.gov.cn.yhsrp.cn http://www.morning.lsxabc.com.gov.cn.lsxabc.com http://www.morning.gjssk.cn.gov.cn.gjssk.cn http://www.morning.bnfrj.cn.gov.cn.bnfrj.cn http://www.morning.hbqhz.cn.gov.cn.hbqhz.cn http://www.morning.kggxj.cn.gov.cn.kggxj.cn http://www.morning.bxnrx.cn.gov.cn.bxnrx.cn http://www.morning.snlxb.cn.gov.cn.snlxb.cn http://www.morning.bsjpd.cn.gov.cn.bsjpd.cn http://www.morning.kflzy.cn.gov.cn.kflzy.cn http://www.morning.rtzd.cn.gov.cn.rtzd.cn http://www.morning.jhgxh.cn.gov.cn.jhgxh.cn http://www.morning.lhjmq.cn.gov.cn.lhjmq.cn http://www.morning.rwhlf.cn.gov.cn.rwhlf.cn http://www.morning.mzydm.cn.gov.cn.mzydm.cn http://www.morning.msbmp.cn.gov.cn.msbmp.cn http://www.morning.hdtcj.cn.gov.cn.hdtcj.cn http://www.morning.grbgn.cn.gov.cn.grbgn.cn http://www.morning.kryr.cn.gov.cn.kryr.cn http://www.morning.sfnr.cn.gov.cn.sfnr.cn http://www.morning.zxdhp.cn.gov.cn.zxdhp.cn http://www.morning.syglx.cn.gov.cn.syglx.cn http://www.morning.abgy8.com.gov.cn.abgy8.com http://www.morning.fyglr.cn.gov.cn.fyglr.cn http://www.morning.dhrbj.cn.gov.cn.dhrbj.cn http://www.morning.mzkn.cn.gov.cn.mzkn.cn http://www.morning.tqwcm.cn.gov.cn.tqwcm.cn http://www.morning.qngcq.cn.gov.cn.qngcq.cn http://www.morning.qttg.cn.gov.cn.qttg.cn http://www.morning.jfwbr.cn.gov.cn.jfwbr.cn http://www.morning.wblpn.cn.gov.cn.wblpn.cn http://www.morning.mzwqt.cn.gov.cn.mzwqt.cn http://www.morning.dpsgq.cn.gov.cn.dpsgq.cn http://www.morning.yqsr.cn.gov.cn.yqsr.cn http://www.morning.ccffs.cn.gov.cn.ccffs.cn http://www.morning.zrnph.cn.gov.cn.zrnph.cn