GVKun编程网logo

android – adb shell ping主机不起作用(安卓adb shell)

4

如果您想了解android–adbshellping主机不起作用和安卓adbshell的知识,那么本篇文章将是您的不二之选。我们将深入剖析android–adbshellping主机不起作用的各个方面

如果您想了解android – adb shell ping主机不起作用安卓adb shell的知识,那么本篇文章将是您的不二之选。我们将深入剖析android – adb shell ping主机不起作用的各个方面,并为您解答安卓adb shell的疑在这篇文章中,我们将为您介绍android – adb shell ping主机不起作用的相关知识,同时也会详细的解释安卓adb shell的运用方法,并给出实际的案例分析,希望能帮助到您!

本文目录一览:

android – adb shell ping主机不起作用(安卓adb shell)

android – adb shell ping主机不起作用(安卓adb shell)

现在,我想检查 android设备是否可以通过网络连接到另一台设备.我可以使用浏览器登录互联网.但是当我使用adb shell连接到android模拟器并使用ping命令连接到主机时,它会失败.

kaiwii@ubuntu:~$adb shell ping 192.168.145.136 PING 192.168.145.136 (192.168.145.136) 56(84) bytes of data. ^C

(192.168.145.136是主持人的ip!)

但是当我ping 127.0.0.1时,它可以工作.所以,我肯定肯定设备支持ping命令.我只是困惑为什么它无法ping主机,而我可以在浏览器中登录互联网.更何况,任何人都可以显示任何其他方法来检查Android中的网络能力?

谢谢

解决方法

您使用手机的数据连接连接到互联网,而不是通过主机连接到USB.因此,您的设备与主机之间没有网络连接.此外,由于您的主机没有公共IP地址(它位于多级NAT后面,IP中至少有一个级别可见),因此设备无法通过公共互联网ping您的主机.

至于检查网络连接,您可以尝试以下方法:

> ping www.google.com

输出:

/ $ping -c1 www.google.com
 PING www.google.com (74.125.236.51) 56(84) bytes of data.
 64 bytes from www.google.com (74.125.236.51): icmp_seq=1 ttl=55 time=40.8 ms
 64 bytes from www.google.com (74.125.236.51): icmp_seq=2 ttl=55 time=47.1 ms
 --- www.google.com ping statistics ---
2 packets transmitted,2 received,0% packet loss,time 1001ms
rtt min/avg/max/mdev = 40.850/43.999/47.148/3.149 ms

>检查网络连接:busyBox ifconfig -a

输出(剪掉一点):

eth0      Link encap:Ethernet  HWaddr 5C:4C:A9:FC:B0:C0 
          inet addr:192.168.2.3  Bcast:192.168.2.255  Mask:255.255.255.0
          inet6 addr: fe80::5e4c:a9ff:fefc:b0c0/64 Scope:Link
          UP broADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:359 errors:0 dropped:0 overruns:0 frame:0
          TX packets:275 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:87543 (85.4 KiB)  TX bytes:48382 (47.2 KiB)

lo        Link encap:Local Loopback 
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:620 errors:0 dropped:0 overruns:0 frame:0
          TX packets:620 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:74037 (72.3 KiB)  TX bytes:74037 (72.3 KiB)

rmnet0    Link encap:Ethernet  HWaddr 9E:43:B5:97:81:B1 
          inet addr:106.197.224.94  Bcast:106.197.224.95  Mask:255.255.255.252
          broADCAST MULTICAST  MTU:2000  Metric:1
          RX packets:54337 errors:0 dropped:0 overruns:0 frame:0
          TX packets:59160 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:32720935 (31.2 MiB)  TX bytes:8334589 (7.9 MiB)
<snipped value="rmnet1,rmnet2" />
sit0      Link encap:IPv6-in-IPv4 
          NOARP  MTU:1480  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
<snipped value="tunl0,usb0" />

>值得信赖的浏览器和谷歌组合.

ADB - 无法创建调试桥:无法启动 adb 服务器

ADB - 无法创建调试桥:无法启动 adb 服务器

如何解决ADB - 无法创建调试桥:无法启动 adb 服务器

尝试从 AVD 启动模拟设备时出现错误:

java.lang.RuntimeException: Unable to create Debug Bridge: Unable to start adb server: error: protocol fault (Couldn''t read status): No error
''C:\\Android\\Sdk\\platform-tools\\adb.exe start-server'' Failed -- run manually if necessary

到目前为止我从社区收到的一些建议:

  1. 手动运行 adb start-server 命令
  2. 重新安装独立的和从 SDK 管理器中的平台工具
  3. 重新安装 Android Studio
  4. 重新安装 Java
  5. 重新启动计算机

这些选项似乎都不能解决我的问题。我已经尝试禁用我的防火墙并为 adb 运行的可执行文件和端口添加入站规则,但仍然没有运气。

我觉得奇怪的是它说:“没有错误”。我一直无法在任何地方找到此状态的记录。

有没有人知道我可以做些什么来解决这个问题?我现在有点累,所以如果您需要任何其他信息,请告诉我。

谢谢

adb client, adb server, adbd 原理浅析(附带我的操作过程)

adb client, adb server, adbd 原理浅析(附带我的操作过程)

adb 是什么?adb 就是 Android 调试桥,很形象啊。 先来看 adb 原理的逻辑图:

 

     再来进行实际操作:我的 pc 的 ip 是 192.168.1.102, 我的 android 手机的 ip 为 192.168.1.100

    1.  在 pc 上执行:netstat -nao | findstr 5037

         发现结果是空白。

 

    2. 执行 adb shell, 肯定是进不了任何 shell 啊, 然后执行:netstat -nao | findstr 5037

        结果是:TCP    127.0.0.1:5037         0.0.0.0:0              LISTENING       3840

        可见 3840 进程正在监听 5037 端口, 这个进程实际上就是 adb server

 

    3. 打开 android 手机,执行 adb connect 192.168.1.100,  请参考我之前的博文, 确保 adb 能连接上手机哈。

       发现, 界面提示 adb 成功连接上了手机。

       执行 netstat -nao | findstr 5037, 居然仍然是:TCP    127.0.0.1:5037         0.0.0.0:0              LISTENING       3840

       执行 adb shell, 进入手机的 android 系统, 再次在 pc 的 cmd 中(非前面的 shell 中)执行 netstat -nao | findstr 5037, 结果为:

      TCP    127.0.0.1:1571         127.0.0.1:5037         ESTABLISHED     4496
      TCP    127.0.0.1:5037         0.0.0.0:0              LISTENING       3840
      TCP    127.0.0.1:5037         127.0.0.1:1571         ESTABLISHED     3840  

       表明,adb client 和 adb server 建立 tcp 连接了。

 

     4. 不需要退出上面的 shell, 仅在另一个 cmd 中执行 netstat -nao | findstr 5555, 结果为:

         TCP    192.168.1.102:1559     192.168.1.100:5555     ESTABLISHED     3840

        表明, adb server 和 adbd 建立起了 tcp 连接。

 

     5. 前面已经进入了手机的 shell, 现在在 shell 中执行:netstat -nao | busybox grep 5555, 结果为:

         tcp       0      0 0.0.0.0:5555           0.0.0.0:*              LISTEN
         tcp       0      0 192.168.1.100:5555     192.168.1.102:1559     ESTABLISHED

         进一步证实, adb server 和 adbd 建立起了 tcp 连接。

 

        归纳:

        adb client (pid:4496)   <--->adb server (监听 5037 端口, pid:3840)<--->adbd (监听 5555 端口,pid: 未显示)

        |<-------------------------------    在 pc 端    ------------------------------> |        |<------------ 在手机端 ------------>|

 

        其中, adb server 作为 adb client 的服务端, 而 adbd 又作为 adb server 的服务端, 实际上就是下面这个意思:

       儿子 <------------------------------> 爸爸 <-------------------------------------> 爷爷

 

        

        前面我们已经说过, 也可以利用数据线来进行连接, 这里, 我就不过多再赘述了, 原理大体类似, 为了让大家更清晰, 我借鉴了网上的一幅图, 这幅图很强大, 真是太棒了:

        

       一图胜千言万语

 

 

 

       突然, 我想起了小时候, 一个老人给我出的题: 两个爸爸和两个儿子, 要均分 3 个同样的苹果, 不允许切割, 请问怎么分
---------------------
作者:stpeace
来源:CSDN
原文:https://blog.csdn.net/stpeace/article/details/24933813
版权声明:本文为博主原创文章,转载请附上博文链接!

ADB enhanced Putty (replacement for

ADB enhanced Putty (replacement for "adb shell")

We all know that running "adb shell" from the command line is pretty crap, and when using a latter busybox version which has coloring support it''s ultimately crap. One workaround was usually to start a telnet server on the phone, and use putty to connect to that telnet server. Actually there is a more easier way to do that which also works for non rooted phones.

Actually the Android Debug Bridge has a terminal connection feature (roughly speaking), which will be enabled after you connect to the adb server in "0006shell:" mode. You can actually use the putty to connect to this interface always, by setting the following things:

- Turn off line discipline in settings(Terminal--Local echo:Force off Local line-editing:Force off)

- Use RAW mode to connect to localhost:5037

- Enter "0012host:transport-usb" (use mouse right button)

- Enter "0006shell:" (use mouse right button)

PS.Don''t put anykey with keyboard



Now you''ve got a full fledged connection to your device. The main drawback is that it''s tedious to repeat the above all the time, so I''ve made some modifications to the putty binary that adds a new type of connection, called "Adb"

To use the enhanced putty:
- Select Adb from the connection type list
- Enter "transport-usb" in the host (or any other connection string, check the adb socket interface documentation if you need something else than connecting via usb)
- Enter 5037 as port, if it''s not already set there.
- Connect and enjoy (you might also save this connection, so next time you only have to double-click on the settings)

DL and source: http://github.com/sztupy/adbputty/downloads

Screenshot:


http://www.busybox.net/products.html


adb push ,adb pull和adb install的区别

adb push ,adb pull和adb install的区别

1、用命令行把手机上的文件拷贝到电脑上

1
adb pull sdcard/ 1222073679 .png

 拷贝文件夹命令,如把log文件夹拷贝到电脑当前目录

1
adb pull sdcard/log/

拷贝文件夹到当前文件夹下的某文件夹里面,如拷贝360文件夹到当前文件夹的360里面

1
adb pull sdcard/ 360 360

 

2、顺便学一下push命令吧

1
adb push aaa/contacts_app.db /sdcard/

把文件contacts_app.db拷贝到手机sdcard上

3,adb push和adb install是apk包安装的两种方法,用法如下:

1.adb push XXX.apk /path你想推送的路径
2.adb install XXX.apk

显而易见,两者的区别是,adb push可以自定义推送路径,adb install 只能安装在/data/app文件下。
其次,adb push 是将apk包复制到路径下面,重启后/system/app和/data/app下的apk包都会自动安装。
adb install是将apk安装到手机里,流程是:
复制APK安装包到data/app目录下,解压并扫描安装包,把dex文件(Dalvik字节码)保存到dalvik-cache目录,并data/data目录下创建对应的应用数据目录(so文件也在./包名/lib下,或者/data/app-lib/包名)。
另外,install复制APK安装包到data/app目录下的过程中,会将apk名改为包名-1.apk,数字为android接收到的版本号。
其中对于/system文件夹比较容易碰到的问题是报read only file的错误,哪怕/system已经被你改成了777的权限,解决的方法是:1.adb shell 2.su 3.mount -o remount rw /system重新挂载一下/system文件系统。

 

4、如何把某个app的数据库文件复制到电脑上

此方法需要root手机

先把数据库文件复制到手机sdcard上

1
2
3
4
5
6
7
8
9
10
11
12
E:\test>adb shell
shell @hwC199 :/ $ su
su
root @hwC199 :/ # cd /data/data/com.android.contacts/databases/
cd /data/data/com.android.contacts/databases/
root @hwC199 :/data/data/com.android.contacts/databases # ls
ls
contacts_app.db
contacts_app.db-journal
root @hwC199 :/data/data/com.android.contacts/databases # cp contacts_app.db /mnt/sdcard/
_app.db /mnt/sdcard/                                                          <
root @hwC199 :/data/data/com.android.contacts/databases #

也就是进入su输入命令后,执行此命令(把contacts_app.db复制到sdcard卡)

1
cp /data/data/com.android.contacts/databases/contacts_app.db /mnt/sdcard/

这样contacts_app.db数据库文件就复制到手机sdcard上了。在电脑上某个文件夹shift+右键开一个终端,再用以下语句复制到电脑上即可

1
adb pull sdcard/contacts_app.db

 

我们今天的关于android – adb shell ping主机不起作用安卓adb shell的分享已经告一段落,感谢您的关注,如果您想了解更多关于ADB - 无法创建调试桥:无法启动 adb 服务器、adb client, adb server, adbd 原理浅析(附带我的操作过程)、ADB enhanced Putty (replacement for "adb shell")、adb push ,adb pull和adb install的区别的相关信息,请在本站查询。

本文标签: