STF 单独使用 STF 中的 adb connect 功能

codeskyblue · 2017年03月20日 · 最后由 火山草 回复于 2021年11月12日 · 5907 次阅读
本帖已被设为精华帖!

说明

OpenSTF 中有一个远程 Debug的功能,可以执行完adb connect一个地址后,就可以对远方的手机进行各种 adb 操作了。

这个功能 STF 早已把它开源 https://github.com/openstf/adbkit 但只是没有写到文档里去而已。原本只能使用 js 代码来调用这个功能,我提了一个简单的pr,使得该功能可以用在命令行下调用。下面具体说下使用方法

使用方法

  1. 安装 nodejs

    推荐使用 nvm 安装

  2. 安装 adbkit

    $ npm i -g adbkit
    
  3. 启动 usb 转 tcp 服务

    $ adbkit usb-device-to-tcp -p $port $serial
    
  4. 再另一台装有 adb 的机器上进行设备的连接

    假设启动 adbkit 服务的机器 ip 是 10.0.0.1 端口是 15555

    $ adb connect 10.0.0.1:15555
    

致谢

感谢openSTF项目

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 32 条回复 时间 点赞
codeskyblue 求助,关于远程 ADB 调试的实现 中提及了此贴 03月20日 14:22
思寒_seveniruby 将本帖设为了精华贴 03月21日 09:39

adbkit 是 stf 的精华。

@zangtian2 你想要的是不是这个?

陈恒捷 回复

是的,谢了伙计。已经在看了

👍 好用

这个功能果然强大 ,可以直接外网远程手机,试了下速度也挺快

STF 精华中的精华...

adbkit 貌似不是通过 adb forword 实现的,兄台知道 adbkit 的实现原理吗

心向东 回复

最简单的就是看 adbkit 的源码了

$serial 参数是什么?

大神 请教一下 这个 adb connect 后边的端口号 是不固定的,有什么方法可以让这个端口固定么?

已经安装好了,报错提示如下,求大神指点
'adbkit' 不是内部或外部命令,也不是可运行的程序或批处理文件。

土豆 回复

我的安装貌似失败了,能指点下吗?

IT小君 回复

nodejs 没装好

codeskyblue 回复

cmd 使用 node 命令没问题,npm 也可以使用貌似安装好了,如下图:

@IT小君
你要这样子启动才可以

@IT小君
然后在这样子执行就可以了

这个 adbkit 本质上还是手机连接着 usb,并没有正常断开 usb,只是通过代理去分配一个端口号,然后通过这个端口号就可以访问到你手机,如果你连接成功后,在把 usb 断开,你就没法再访问到你手机了


其实就是不能在 adb forword 访问了

少女 回复

请教一下,电脑上有多个 ADB DEVICES 也可以这样分配端口,然后别的机器能 adb connect IP:PORT 来连接这台电脑上的安卓设备吗?

ammani 回复

可以的,一个设备一个端口

codeskyblue 回复


这个是什么情况呀,我用 localhost 和 127.0.0.1 都不行,“无法识别的公钥格式”。。。

ammani 回复

有没有大神求助一下

ammani 回复

adb 版本低?

精华!!!

codeskyblue 回复

不是,是当时 adb 最新版本变化延伸的问题,github 上面有人给出了解决方法,改一下 adbkit 下面的一个 js 文件然后就可以了,不过到后面发现装最新的 adbkit 也已经处理了这个问题。
(https://github.com/openstf/stf/issues/1030)

ammani 回复

那是我改的

ammani 回复

多谢指教 ,女女神啊 ,厉害了

如果代码引用 adbkit,进行端口转发怎么搞

能否在开发者模式下实时调试 adbkit 项目,遇到一些 bug 想本地调试下

今天才发现大佬的这个帖子。。膜拜一下先

学习了!!

如果想要批量将 serial 转成 端口,这个命令能支持吗?还是说要每个线程跑一个这个命令

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册