我可以使用Android模拟器访问我的笔记本电脑web服务器,我使用10.0.2.2:portno 工作得很好。
但当我连接真正的Android手机时,手机浏览器无法连接到我笔记本电脑上的同一个web服务器。手机和笔记本电脑通过USB线连接。如果我运行 adb devices命令,我可以看到我的手机。
我错过了什么?
我可以使用Android模拟器访问我的笔记本电脑web服务器,我使用10.0.2.2:portno 工作得很好。
但当我连接真正的Android手机时,手机浏览器无法连接到我笔记本电脑上的同一个web服务器。手机和笔记本电脑通过USB线连接。如果我运行 adb devices命令,我可以看到我的手机。
我错过了什么?
当前回答
Ngrok是最好的解决方案。 如果你正在开发PHP,那么我建议安装Laravel Valet,它有MacOS和Linux版本,然后你可以使用Valet共享命令。如果你正在开发任何前端技术,需要共享一个端口,比如3000,那么直接使用ngrok
Xampp和ngrok
你也可以在Windows中使用ngrok和Xampp。您可以使用以下流程。这很简单。
在ngrok上注册一个免费账户 从下载部分下载ngrok文件并打开它
注意Apache服务器运行的端口。我的情况是80
在ngrok命令行中输入ngrok http YOUR_PORT并复制转发地址
现在你可以在任何设备上使用这个转发链接(即你的物理android设备),它将托管你的本地主机服务器。例如,
取代
http://localhost/my-files/
with
http://YOUR_FORWARDING_ADDRESS/my-files/
其他回答
最简单的方法(这对我来说完美无缺)是在0.0.0.0:<port_no>本地托管您的站点,并使用移动设备访问它,在浏览器中使用<local_ipv4_address>:<port_no>/<path>。
要知道您的本地ipv4地址,只需在cmd中键入ipconfig 任何连接到同一网络的设备都可以访问这个url。
在创建应用程序时,使用移动设备调试或渲染是很有帮助的。可以使用带有端口号的IPv4地址通过手机访问系统localhost。需要注意的是,为了实现这一点,两台设备都应该连接到同一个wifi或网络,并且机器的网络应该是私有的。
USB不为移动设备提供网络。
如果你的桌面和手机都连接到同一个WiFi(或任何其他本地网络),那么使用路由器分配的桌面IP地址(不是localhost,也不是127.0.0.1)。
要找出您的桌面的IP地址:
在命令行输入ipconfig (Windows)或ifconfig (Unix) 在Linux上,一行程序ifconfig | grep "inet " | grep -v 127.0.0.1将只产生重要的东西 有很多关于如何在Windows上有类似输出的建议 会有一大堆IP 尝试所有这些(除了前面提到的localhost和127.0.0.1)
如果你的手机连接到移动网络,那么事情就会变得更加困难。
要么走硬核路线:
首先找出你的路由器外部IP地址(https://www.google.de/search?q=myip) 然后,在路由器上转发一些端口到<您的桌面IP>:<服务器端口号> 最后使用外部IP地址和转发端口
否则使用类似xip的东西。IO或ngrok。
注意:ifconfig命令已经弃用,因此在Debian Linux上默认没有,从Debian扩展开始。在Debian Linux上检查网络配置的新的推荐替代方法是ip命令。例如,使用ip命令显示网络配置,执行如下命令:
ip address
以上ip命令可以缩写为:
ip a
如果您仍然喜欢使用ifconfig作为日常系统管理程序的一部分,您可以轻松地将其作为net-tools包的一部分安装。
apt-get install net-tools
参考资料在这里
即使您的移动设备和电脑通过usb连接,此解决方案也可用:
此时需要使用端口转发功能。 在谷歌chrome inspect窗口(chrome://inspect)可以看到连接的设备。
点击端口fowading按钮,并设置一个随机端口,例如3000到您的笔记本电脑使用的端口,例如8080。
现在从设备上使用localhost:3000来访问笔记本电脑中的localhost:8080(or_whatever_ip:portno)。 您可以在移动浏览器中查看。在移动浏览器中尝试localhost:3000。 确保勾选“端口转发设置”窗口中的“启用端口转发”复选框
在Windows PC上,您可能不需要做任何其他事情,只需使用“ipconfig”命令查找您的IPv4地址。
第一步:用USB线连接你的手机和电脑。 第二步:使用命令'ipconfig'找到你的IPv4地址(路由器的外部IP),例如192.168.1.5。 步骤3:只需从手机浏览器中访问“192.168.1.5:8080”。真的有用!
其他环境细节: Windows 7,谷歌Nexus 4 (4.2.2), Tomcat服务器,Grails应用程序。
你还应该确保你在AndroidManifest文件中有访问internet的权限:
<uses-permission android:name="android.permission.INTERNET"/>