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

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

说明

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 条回复 时间 点赞

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

学习了!!

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

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

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

ammani 回复

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

ammani 回复

那是我改的

codeskyblue 回复

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

精华!!!

ammani 回复

adb 版本低?

ammani 回复

有没有大神求助一下

codeskyblue 回复


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

ammani 回复

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

少女 回复

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


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

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

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

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

codeskyblue 回复

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

IT小君 回复

nodejs 没装好

土豆 回复

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

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

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

$serial 参数是什么?

心向东 回复

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

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

STF 精华中的精华...

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

陈恒捷 回复

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

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

adbkit 是 stf 的精华。

思寒_seveniruby 将本帖设为了精华贴 03月21日 09:39
codeskyblue 求助,关于远程 ADB 调试的实现 中提及了此贴 03月20日 14:22
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册