安卓开发,如何通过电脑连接手机 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
jxf2008
V2EX    Android

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

  •  
  •   jxf2008 2019-03-11 09:52:49 +08:00 13766 次点击
    这是一个创建于 2424 天前的主题,其中的信息可能已经有所发展或是发生改变。
    安卓开发,公司提了个新要求,触及我的知识盲区。。。
    要求:安卓手机,通过 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     Solana     5850 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 06:25 PVG 14:25 LAX 23:25 JFK 02:25
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86