Android 12 打开网络ADB并禁用USB连接ADB 您所在的位置:网站首页 安卓手机怎么打开网络设置权限 Android 12 打开网络ADB并禁用USB连接ADB

Android 12 打开网络ADB并禁用USB连接ADB

2024-07-08 02:06| 来源: 网络整理| 查看: 265

在这里插入图片描述

平台

RK3588 + Android 12

Android 调试桥 (adb)     Android 调试桥 (adb) 是一种功能多样的命令行工具,可让您与设备进行通信。adb 命令可用于执行各种设备操作,例如安装和调试应用。adb 提供对 Unix shell(可用来在设备上运行各种命令)的访问权限。它是一种客户端-服务器程序,包括以下三个组件:

客户端:用于发送命令。客户端在开发机器上运行。您可以通过发出 adb 命令从命令行终端调用客户端。守护程序 (adbd):用于在设备上运行命令。守护程序在每个设备上作为后台进程运行。服务器:用于管理客户端与守护程序之间的通信。服务器在开发机器上作为后台进程运行。 AndroidStudio 中显示的设备名称

在这里插入图片描述 第一个 rockchip 来自系统属性: ro.product.product.manufacturer 第二个一般是ro.product.model PS 如果 manufacturer 和 model 一样, 那么会只显示一个的值.

ADB使能和控制USB调试 ADB调试的开关: 系统属性persist.sys.usb.config值里是否包含adb 系统设置数据库Settings.Global.ADB_ENABLED值是否为非0

frameworks/base/services/core/java/com/android/server/adb/AdbService.java

private static final String USB_PERSISTENT_CONFIG_PROPERTY = "persist.sys.usb.config"; private void initAdbState() { try { /* * Use the normal bootmode persistent prop to maintain state of adb across * all boot modes. */ mIsAdbUsbEnabled = containsFunction( SystemProperties.get(USB_PERSISTENT_CONFIG_PROPERTY, ""), UsbManager.USB_FUNCTION_ADB); mIsAdbWifiEnabled = "1".equals( SystemProperties.get(WIFI_PERSISTENT_CONFIG_PROPERTY, "0")); // register observer to listen for settings changes mObserver = new AdbSettingsObserver(); mContentResolver.registerContentObserver( Settings.Global.getUriFor(Settings.Global.ADB_ENABLED), false, mObserver); mContentResolver.registerContentObserver( Settings.Global.getUriFor(Settings.Global.ADB_WIFI_ENABLED), false, mObserver); } catch (Exception e) { Slog.e(TAG, "Error in initAdbState", e); } } private void setAdbEnabled(boolean enable, byte transportType) { if (DEBUG) { Slog.d(TAG, "setAdbEnabled(" + enable + "), mIsAdbUsbEnabled=" + mIsAdbUsbEnabled + ", mIsAdbWifiEnabled=" + mIsAdbWifiEnabled + ", transportType=" + transportType); } if (transportType == AdbTransportType.USB && enable != mIsAdbUsbEnabled) { mIsAdbUsbEnabled = enable; } else if (transportType == AdbTransportType.WIFI && enable != mIsAdbWifiEnabled) { mIsAdbWifiEnabled = enable; if (mIsAdbWifiEnabled) { if (!AdbProperties.secure().orElse(false) && mDebuggingManager == null) { // Start adbd. If this is secure adb, then we defer enabling adb over WiFi. SystemProperties.set(WIFI_PERSISTENT_CONFIG_PROPERTY, "1"); mConnectionPortPoller = new AdbDebuggingManager.AdbConnectionPortPoller(mPortListener); mConnectionPortPoller.start(); } } else { // Stop adb over WiFi. SystemProperties.set(WIFI_PERSISTENT_CONFIG_PROPERTY, "0"); if (mConnectionPortPoller != null) { mConnectionPortPoller.cancelAndWait(); mConnectionPortPoller = null; } } } else { // No change return; } if (enable) { startAdbd(); } else { stopAdbd(); } for (IAdbTransport transport : mTransports.values()) { try { transport.onAdbEnabled(enable, transportType); } catch (RemoteException e) { Slog.w(TAG, "Unable to send onAdbEnabled to transport " + transport.toString()); } } if (mDebuggingManager != null) { mDebuggingManager.setAdbEnabled(enable, transportType); } } private void startAdbd() { SystemProperties.set(CTL_START, ADBD); } private void stopAdbd() { if (!mIsAdbUsbEnabled && !mIsAdbWifiEnabled) { SystemProperties.set(CTL_STOP, ADBD); } }

使用设置系统属性ctl.start启动和ctl.stop停止adbd服务

增加系统控制是否启用USB调试

packages/modules/adb/daemon/main.cpp

int adbd_main(int server_port) { umask(0); signal(SIGPIPE, SIG_IGN); //..... #if defined(__ANDROID__) bool adb_usb_on = android::base::GetBoolProperty("persist.adb.adb_usb", false); if (access(USB_FFS_ADB_EP0, F_OK) == 0 && adb_usb_on) { // Listen on USB. usb_init(); is_usb = true; } #endif

修改系统属性后, 重启adbd服务生效.

默认网络ADB调试端口 系统属性service.adb.tcp.port

修改 packages/modules/adb/daemon/main.cpp 需注意, 可能导致烧录后不能启动, 卡在下面LOG:

emmc_point is /dev/block/mmcblk0 sd_point is (null) sd_point_2 is (null) read cmdline I:Boot command: boot-recovery I:Got 2 arguments from boot message ensure_path_mounted path=/cache/recovery/last_locale I:[libfs_mgr]superblock s_max_mnt_count:65535,/dev/block/by-name/cache I:[libfs_mgr]__mount(source=/dev/block/by-name/cache,target=/cache,type=ext4)=0: Success Loading make_device from librecovery_ui_ext.so W:Failed to read max brightness: No such file or directory I:Screensaver disabled erasing_text: zh (81 x 38 @ 5031) no_command_text: zh (111 x 38 @ 5031) error_text: zh (65 x 38 @ 5031) W:Failed to load bitmap cancel_wipe_data_text for locale zh-Hans-CN (error -1). Falling back to use default locale. E:Failed to load bitmap cancel_wipe_data_text for locale en-US (error -1) W:Failed to load bitmap factory_data_reset_text for locale zh-Hans-CN (error -1). Falling back to use default locale. E:Failed to load bitmap factory_data_reset_text for locale en-US (error -1) W:Failed to load bitmap try_again_text for locale zh-Hans-CN (error -1). Falling back to use default locale. E:Failed to load bitmap try_again_text for locale en-US (error -1) W:Failed to load bitmap wipe_data_confirmation_text for locale zh-Hans-CN (error -1). Falling back to use default loc. E:Failed to load bitmap wipe_data_confirmation_text for locale en-US (error -1) W:Failed to load bitmap wipe_data_menu_header_text for locale zh-Hans-CN (error -1). Falling back to use default loca. E:Failed to load bitmap wipe_data_menu_header_text for locale en-US (error -1) I:Starting recovery (pid 258) on Fri Nov 17 01:15:53 2023 I:locale is [zh-Hans-CN] SELinux: Loaded file_contexts


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有