我可以使用Android模拟器访问我的笔记本电脑web服务器,我使用10.0.2.2:portno 工作得很好。
但当我连接真正的Android手机时,手机浏览器无法连接到我笔记本电脑上的同一个web服务器。手机和笔记本电脑通过USB线连接。如果我运行 adb devices命令,我可以看到我的手机。
我错过了什么?
我可以使用Android模拟器访问我的笔记本电脑web服务器,我使用10.0.2.2:portno 工作得很好。
但当我连接真正的Android手机时,手机浏览器无法连接到我笔记本电脑上的同一个web服务器。手机和笔记本电脑通过USB线连接。如果我运行 adb devices命令,我可以看到我的手机。
我错过了什么?
当前回答
在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"/>
其他回答
Mac OS X用户
我通过启用远程管理实现了这一点:
确保你的手机和笔记本电脑连接到同一个WiFi网络 在Mac上,进入系统首选项/共享 开启远程管理
你会看到一条类似这样的消息:
其他用户可以使用some.url.com地址管理您的计算机
在你的Android设备上,你现在应该能够访问some.url.com,它委托给Mac上的localhost。你也可以使用ifconfig来获得Mac的IP地址。
ngrok的可移植解决方案(任何带有Node.js的操作系统)
如果你不介意用临时域名公开你的项目,你可以使用ngrok。假设我有一个在localhost:9460上运行的应用程序,我可以简单地编写
npm install ngrok -g
ngrok http 9460
这将给我:
Session Status online Update update available (version 2.2.8, Ctrl-U to update) Version 2.2.3 Region United States (us) Web Interface http://127.0.0.1:4040 Forwarding http://f7c23d14.ngrok.io -> localhost:9460 Forwarding https://f7c23d14.ngrok.io -> localhost:9460 Connections ttl opn rt1 rt5 p50 p90 0 0 0.00 0.00 0.00 0.00
我现在可以通过https://f7c23d14.ngrok.io远程查看localhost。这是与客户分享设计工作或进展的好机会。
替代解决方案与nginx代理通过
如果你通过nginx proxy_pass运行类似这样的东西,它将需要更多的调整-这是一个hack方法,但它适用于我,我对改进它的建议是开放的:
启用远程管理(如上所述) 临时将服务器设置为监听81端口,而不是80端口 输入以下命令:
sudo nginx -s reload
访问http://youripaddress: 81
server {
listen 80;
listen 81; # <-------- add this to expose the app on a unique port
server_name ~^(local|local\.m).example.com$;
# ...
}
重新加载并访问http://youripaddress:81
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/
然而,有一个更好的解决方案。您可以使用IP地址“10.0.2.2”访问您的主机。Android团队就是这样设计的。所以你的web服务器可以完美地运行在本地主机和从你的Android应用程序,你可以通过“http://10.0.2.2:8080”访问它。
我使用了这个过程:
在PC上安装Fiddler 按照这些优秀的说明设置PC和Android设备 只需在Android设备上打开浏览器,输入http://ipv4.fiddler访问本地主机
注意,这个过程需要你在每次会话开始和结束时更改Android设备上的WiFi设置。我发现这比我的Android设备更轻松。
使用connectify和xampp或等效,并在移动URL栏上输入ip地址访问