首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  Android

安卓开发,如何通过电脑连接手机

  •  
  •   jxf2008 · 273 天前 · 2395 次点击
    这是一个创建于 273 天前的主题,其中的信息可能已经有所发展或是发生改变。
    安卓开发,公司提了个新要求,触及我的知识盲区。。。
    要求:安卓手机,通过 USB 线连接电脑,电脑上某一个软件能够和手机的某个 APP 通讯

    手机 APP 是我开发的,然后公司要求开发一个 PC 端的软件和手机 APP 通讯

    然后我不知道手机连接电脑这方面的知识,网上搜索了下,全是如何使用手机助手。。。
    我想问下诸位,有没有这方面的资料
    31 回复  |  直到 2019-03-12 10:46:02 +08:00
        1
    jxf2008   273 天前
    @catalina
    出来,我要打屎你!!!!
        2
    Juszoe   273 天前
        3
    jxf2008   273 天前
    @Juszoe
    这个文章我看过,现在我们 PC 端软件会安卓到客户电脑上,但客户电脑上没有 adb
    要么把 adb 集成到我们的 PC 软件上,但貌似很难做到。。。
        4
    pursuer   273 天前
    集成 adb,像 360 qq 之类的 app 都这么做。或者手机打开 usb 热点然后电脑连上,但是可能会有意外的流量消耗。
        5
    tearslee   273 天前
    好奇,是通过 usb 链接的电脑,也就是说电脑与手机是在同一场景,为什么要通讯.
    如果 usb 不是必须,那直接通过设置服务器,转发两个客户端的消息就行了
    如果是必须 usb,那就是 adb 了,
        6
    Lostars   273 天前
    莫不是做群控的
        7
    a1528026364   273 天前
    用 USB 连接,然后电脑跟手机通讯?这什么鬼逻辑需求啊
    都有这环境了有必要么
        8
    fan123199   273 天前
    adb 很小的,集合进去不难
        9
    jxf2008   273 天前
    @tearslee
    是这样的,客户要求把手机 APP 上的数据传给电脑,同时也可以把电脑上的数据传给手机

    我们最初的解决方案,是把手机和电脑连同一个路由(手机通过路由的 wifi ),通过 TCP/UDP 通信,但这里有个问题,手机连上路由后要求设置静态 IP。因为只有知道手机的 IP,电脑软件才能向指定的 IP 发送消息

    客户强烈反对这样做,他们的理由是软件的使用人员,把手机连接 wifi 后不会设置手机静态 IP 地址

    另外还有个问题是,客户他们的使用环境中经常没有 wif
        10
    jxf2008   273 天前
    @fan123199
    有相关的资料么?我找了半天没找到。。
        11
    jxf2008   273 天前
    @a1528026364
    参考各种手机助手。。。
    我们的要求是把 APP 上的数据发给电脑,然后电脑上的数据发给手机的某个 APP
        12
    fvckDaybyte2   273 天前 via iPhone
    @jxf2008 为什么 WiFi 要知道手机的 ip 才能连,直接广播不行嘛😑
        13
    jxf2008   273 天前
    @fvckDaybyte2
    客户的环境里很可能没有 wifi..
    反正现在的结论是,只能使用 USB 通信
        14
    manasheep   273 天前
    我做过,adb 可以读到手机 ip 数据,不用 tcpip 的话,可以考虑利用手机文件系统交互,无非就是两方程序写入带时间戳的命令,同时定时监测文件的变化以读取最新的数据,直连通讯方式没有试过,好像是不好弄,可能还不如去搞蓝牙通信方便。
        15
    slamDunkLINk   273 天前
    参考手机投屏?或者电脑投屏的手机?正好问下有没有如此的软件啊
        16
    jxf2008   273 天前
    @manasheep
    现在的问题是,客户那边的环境限制,只能用 USB,因为客户那边电脑部分是台式机,且没有 wifi

    使用 USB 网上找了很多文章都没办法绕过 adb,如果使用 adb 又会牵扯到另一个问题,如何把 adb 集成到我们的 PC 软件上
        17
    Nu11Po1nter   273 天前
    adb 依赖集成不难的.sdk/paltform-tool 目录下的 adb.exe 和几个 dll 文件就是了
        18
    mouyase   273 天前 via Android
    @jxf2008 内置 adb.exe 外加各种参数,和 cmd 一样用法
        19
    swcat   273 天前 via Android
    集成 adb 那个简单啊,把编译好的 adb 放到你的软件的目录下就行了呀,那有什么难得,之前公司就是这样干的
        20
    soulzz   273 天前
    可以参考 https://github.com/Genymobile/gnirehtet
    内置 adb.exe
        21
    fox0001   273 天前 via Android
    adb forward,把手机端口(例如 12345 )映射到 PC 的端口(例如 12346 ),手机那边在开个服务(端口为 12345 )就可以了,PC 这边就跟 127.0.0.1:12346 这个端口通讯
        22
    sunzongzheng   273 天前
    去年大家做的跳一跳外挂,都是内置 adb,然后各语言实现像素分析,直接把 adb 的可执行文件内置就行
        23
    huage2580   273 天前
    集成 adb 是很简单的,或者说,adb 是必须的,至少做端口转发要用。就把文件夹拷贝好,然后命令运行下;你 pc 端的软件,就做个解压然后绝对路径运行命令,so seay
        24
    manasheep   273 天前
    @jxf2008 继承很简单,AdbWinUsbApi.dll AdbWinApi.dll adb.exe 这三个文件整合到你软件目录里就行了,软件调用它们就可以。
        25
    AngryMagikarp   273 天前
    很久以前我在 Linux 上做过 https://github.com/wiiiky/lucy

    用得是 adb 的端口映射,好像是 adb forward。

    adb 是用 C 写的,我把它集成到了 python 上,然后用 python+GTK 写了个 Linux 的客户端,可以和 Android 手机里的 APP 通信。
        26
    ju5t4fun   273 天前
    AOA 协议?
        27
    openbsd   273 天前
    adb 三个文件 1.6M 左右 打包 tar.gz 才 600 多 K 集成到 PC 端直接调用毫无难度,好用得 1P。可靠性和稳定性和 WIFI 完全不一个量级
        28
    fyyz   273 天前
    这需求太变态了,要用户开启 usb 调试就为了你们这点破需求?

    不如用户在 app 里登录一个帐号,电脑的客户端也登录同一个帐号,然后在服务器进行指令转发?
        29
    linghu1989122   273 天前
    mark 楼上的集成 adb 方案不错
        30
    jxf2008   272 天前
    @fyyz
    1 客户有台式机,且很多环境没有 wifi 和网络,台式机没有蓝牙和 wifi,并且有可能是 window XP 系统
    2 客户的用户水平较低,对于用户群体来说,手机连接 wifi 并查看手机 ip 地址这个非常困哪的操作

    客户要求在考虑以上两点的情况下,完成电脑和手机 APP 的通信
        31
    linhua   272 天前
    安装 rndis 驱动,用 usb tethering
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2764 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 33ms · UTC 13:02 · PVG 21:02 · LAX 05:02 · JFK 08:02
    ♥ Do have faith in what you're doing.