无线Adb的使用与禁用

您所在的位置:网站首页 手机应用禁止使用网络 无线Adb的使用与禁用

无线Adb的使用与禁用

2024-07-09 23:39| 来源: 网络整理| 查看: 265

无线调试

提示:where adb 会列出环境变量中所有adb

无线调试有好几种方法,这里介绍两种:

方法一:adbwireless

如果使用有线网络无法用adb connect命令连接设备的话,可以选择使用无线wifi来连接,最简单的当然是用adbwireless了。

首先在Android设备上装一个叫做Adb Wireless的软件,打开wifi,然后打开adb wireless 点击中间的灰色按钮,稍候按钮会变绿(或变红)在按钮下方会有一段文字:adb connect ip。现在在使用adb connect命令连接这个ip就可以成功连接了。

其他基本傻瓜式操作。

方法二:通过安装模拟终端

首先安装终端模拟器,地址大家自己找了。然后再模拟器里面输入:

$ su//切换到root用户 $ setprop service.adb.tcp.port 5555//设置端口 $ stop adbd//重置adb' $ start adbd//重置adb'

然后通过电脑端的命令行执行

adb connect xxx.xxx.xxx

其中xxx.xxx.xxx代表手机的ip地址。

方法三:通过usb线的adb命令 > adb shell $ setprop service.adb.tcp.port 5555//设置端口 $ exit > adb connect [192.168.10.2]//[]里面是手机的ip地址,确保这个ip是电脑可以访问的ip 禁用无线Adb

产品开发后不让其他开发者使用调试= 工作原理是什么?

原来在我们的PC机(以windows为例)上启动了adb.exe进程时,adb会在本地生成一对密钥adbkey(私钥)与adbkey.pub(公钥);

根据弹框提示“The computer’s RSA key fingerprint is:xxxx”,可以看出是一对RSA算法的密钥,其中公钥是用来发送给手机的;

当你执行“adb shell”时,adb.exe会将当前PC的公钥(或者公钥的hash值)(fingerprint)发送给android设备;这时,如果android上已经保存了这台PC的公钥,则匹配出对应的公钥进行认证,建立adb连接;如果android上没有保存这台PC的公钥,则会弹出提示框,让你确认是否允许这台机器进行adb连接,当你点击了允许授权之后,android就会保存了这台PC的adbkey.pub(公钥); 那么问题来了,这些密钥在PC与Android上分别存储在哪里?

首先PC上,以Windows7为例,当你首次启动adb.exe时,会在C盘的当前用户的目录下生成一个".android"目录,其中adbkey与adbkey.pub就在这个目录下;(adb.exe会在启动时读取这两个文件(没有就重新生成),所以如果你要是删除或者修改了这两个文件之后,必须要关闭adb.exe进程,重启之后才能生效;)

其次Android上,PC的公钥被保存在一个文件中"/data/misc/adb/adb_keys";

在知道了adb这种认证的原理之后,你可以在不希望自己android设备授权任何PC设备进行adb链接时,清除"/data/misc/adb/adb_keys"文件;

也可以在没有屏幕的情况下,让已经认证过的PC将你PC上的adbkey.pub中的公钥导入到android中的"/data/misc/adb/adb_keys"文件中,或者将已经认证过的PC机上的adbkey与adbkey.pub拷贝到本机上覆盖你自己的adbkey与adbkey.pub,然后重启adb.exe,即可执行adb命令;

方法一

在机器上建立/data/misc/adb/adb_keys 以及 在PC上建立adbkey.pub。

方法二

修改framework的代码,这里重点要说的方法,经过实验成功。代码位于: frameworks/base/packages/SystemUI/src/com/android/systemui/usb/UsbDebuggingActivity.java

$ vim UsbDebuggingActivity.java

@Override public void onReceive(Context content, Intent intent) { String action = intent.getAction(); if (!UsbManager.ACTION_USB_STATE.equals(action)) { return; } //: usb show UI //boolean connected = intent.getBooleanExtra(UsbManager.USB_CONNECTED, false); boolean connected = false; //给connect赋值,关掉UI if (!connected) { mActivity.finish(); } //allowUsbDebugging try { IBinder b = ServiceManager.getService(USB_SERVICE); IUsbManager service = IUsbManager.Stub.asInterface(b); service.allowUsbDebugging(true, mKey); } catch (Exception e) { Log.e(TAG, "Unable to notify Usb service", e); } //


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3