无法从我的 Android 模拟器访问 HTTPS

Posted

技术标签:

【中文标题】无法从我的 Android 模拟器访问 HTTPS【英文标题】:Can't access HTTPS from my Android Emulator 【发布时间】:2017-10-10 12:22:04 【问题描述】:

我使用公司代理,所有访问互联网的东西都需要关于代理的特殊配置。我在 CentOS 7 上,使用 CNTLMD 处理代理隧道,使用 React Native 为移动设备开发。而且我使用的是android Studio提供的Android Emulator。

当我尝试在浏览器中打开 Google 时,我首先注意到我的模拟器无法访问任何 HTTPS 协议。谷歌内部重定向到 HTTPS,我总是收到“连接被拒绝”错误。后来(本周),尝试使用 Axios 和 Fetch 发出 HTTP/HTTPS 请求,这已成为一个严重的问题,因为我尝试连接的 API 是在 HTTPS 协议下的。

我的一个朋友在同一个项目中工作,但使用 Mac 没有 HTTPS 问题。我还尝试使用以下命令启动模拟器:

emulator -avd myemulator -http-proxy http://127.0.0.1:3128

还有

emulator -avd Marshmallow86 -http-proxy http://<network username>:<network password>@<ip>:<port>

他们什么都不做。

我尝试在 Android Studio 上设置 HTTP 和 HTTPS 代理,但这似乎不是正确的方法(也没有奏效)。

@edit

我在我的主机上设置了 http_proxy 并在没有参数的情况下启动了模拟器。效果也不好。

我错过了什么?

【问题讨论】:

【参考方案1】:

上面那个不是android avd或者androidstudio的软件我没用过, 但它看起来像代理或 CA 证书问题。 由于差异似乎是由操作系统决定的,我会先猜测 CA 证书。

这个 android 页面有关于从命令行使用 openssl 的建议 探索并考虑导入证书。

https://developer.android.com/training/articles/security-config.html

这个 android 页面有代理配置的当前建议: https://developer.android.com/studio/run/emulator-networking.html

请注意,上述说明已针对新功能进行了更新。 过去我需要一个非 SSL 应用引擎开发服务器的代理 这与您的问题略有不同,但这是我使用的:

对于 SSL 代理,使用 apache Web 服务器,并将其配置为使用 SSL 通过安装自签名证书,然后添加 ProxyPass 和 ProxyPassReverse 在 httpd.conf 和 httpd-ssl.conf 中的 ProxyPass。 代理通行证/http://127.0.0.1:8080/

Apache 作为 SSL 代理接收到 https://127.0.0.1:443 的连接,并且 将它们传递给http://127.0.0.1:8080

然后在应用程序中,将在模拟器中运行的代码 可以使用地址 10.0.2.2 使用android子网路由表连接到dev。操作系统本地主机。

【讨论】:

以上是关于无法从我的 Android 模拟器访问 HTTPS的主要内容,如果未能解决你的问题,请参考以下文章

无法通过安卓设备连接本地服务器

如何从我的 react-native 项目构建 android apk?

我的电脑通过 *** 连接,Android 模拟器无法访问本地 Intranet 站点

无法访问 Android 模拟器上的数据目录

无法从我作为库导入的项目中访问类文件

我可以在 /sdcard 上下载 SQLite 数据库并从我的 Android 应用程序访问它吗?