简化将 Android 应用连接到本地主机
坏方法
正确且简单的方法
为什么没人告诉我这个?
PS 如果你很着急,可以在这里找到正确的解决方案
几个月前,我正在从事一个全栈项目,我想从我的 Android 应用程序向我的桌面发出 API 请求,但由于某种原因,localhost:8000
无法通过我的手机轻松访问。
嗯,可以理解,我知道每个设备的 localhost 都是独立的,无法被你的家庭网络(比如你的 Wi-Fi)访问。所以我笔记本电脑上的 localhost 无法访问我手机上的 localhost。
于是,我向 Google 求助。我得到了很多解决方案,其中最合理的一个是“使用你电脑的内部 IP 地址”,就这样。
坏方法
在我的计算机上运行后ip addr
发现笔记本电脑的内部 IP 是192.168.29.76
。
果然,只要两台设备使用同一个 Wi-Fi 网络,就可以访问,http://192.168.29.76:8000
而不是http://localhost:8000
访问。我的 Android 应用现在可以向本地后端服务器发出 Web 请求了 🎉
但这个解决方案……有点不稳定。
笔记本电脑的内部 IP 地址在连接到 Wi-Fi 时可能会不断变化,具体取决于各种因素。每次变化时,您都必须在应用代码中更改 URL,这很不理想。
还有其他方法,例如使用 ngrok,但它面临类似的问题。
正确且简单的方法
使用adb reverse
。
是的,就是这样。
通过 USB 将您的 Android 设备连接到您的电脑,确保您已设置 adb,然后在您的终端中运行此命令:
adb reverse tcp:8000 tcp:8000
现在,您的手机可以localhost:8000
像 PC 一样访问了。(您可以将其替换8000
为您想要转发的任何端口)
为什么没人告诉我这个?
adb reverse
是的,当我尝试在 Google 或 StackOverflow 上寻找它时却找不到任何人提及它的存在,这让我很惊讶。
这就是我写这篇博客的原因。希望adb reverse
它能更受欢迎。
如果你知道为什么adb reverse
它不那么受欢迎,请告诉我。另外,如果你认识其他 Android 开发者,他们应该知道这个提高效率的小窍门,不妨分享一下这篇博客给他们。:P
封面图片由Unsplash上的Fotis Fotopoulos提供
文章来源:https://dev.to/tusharsadhwani/connecting-android-apps-to-localhost-simplified-57lm