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

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

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

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

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

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

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

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

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

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

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

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

    客户要求在考虑以上两点的情况下,完成电脑和手机 APP 的通信
    linhua
        31
    linhua  
       2019-03-12 10:46:02 +08:00
    安装 rndis 驱动,用 usb tethering
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1105 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 19:31 · PVG 03:31 · LAX 12:31 · JFK 15:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.