Android Studio无法连接Gradle守护进程的解决方法是什么?

5
我正在尝试启动Android Studio,但不断收到Gradle错误。查看守护进程日志,似乎守护进程只接受IPv6连接或127.0.0.1的连接。
然而,我不知道如何使其接受其他连接或使用IPv6。我已经尝试在各个地方添加IPv6标志,但都没有成功。
请注意,代码遍历了我的网络接口,但仍然只接受127.0.0.1的连接。
该错误来自Gradle代码的以下部分:

https://code-review.gradle.org/browse/Gradle/subprojects/messaging/src/main/java/org/gradle/messaging/remote/internal/inet/TcpIncomingConnector.java?r=6264564978680860f88e7a43659459f778546fe8#to104

这里是日志文件:
17:49:57.451 [INFO] [org.gradle.launcher.daemon.server.Daemon] start() called on daemon - DefaultDaemonContext[uid=f2ffb085-b7ad-446a-983d-d6d47a3ae4c0,javaHome=/usr/lib/jvm/java-7-oracle,daemonRegistryDir=/home/whistlepig/.gradle/daemon,pid=7040,idleTimeout=10800000,daemonOpts=-XX:MaxPermSize=256m,-XX:+HeapDumpOnOutOfMemoryError,-Xmx1024m,-Dfile.encoding=UTF-8,-Duser.country=US,-Duser.language=en,-Duser.variant]
17:49:57.466 [DEBUG] [org.gradle.launcher.daemon.server.DaemonStateCoordinator] updating lastActivityAt to 1422226197466
17:49:57.477 [DEBUG] [org.gradle.messaging.remote.internal.inet.InetAddressFactory] Adding IP addresses for network interface vboxnet0
17:49:57.478 [DEBUG] [org.gradle.messaging.remote.internal.inet.InetAddressFactory] Is this a loopback interface? false
17:49:57.479 [DEBUG] [org.gradle.messaging.remote.internal.inet.InetAddressFactory] Is this a multicast interface? true
17:49:57.481 [DEBUG] [org.gradle.messaging.remote.internal.inet.InetAddressFactory] Adding remote address /fe80:0:0:0:800:27ff:fe00:0%4
17:49:57.483 [DEBUG] [org.gradle.messaging.remote.internal.inet.InetAddressFactory] Adding remote address /192.168.56.1
17:49:57.487 [DEBUG] [org.gradle.messaging.remote.internal.inet.InetAddressFactory] Adding remote multicast interface vboxnet0
17:49:57.488 [DEBUG] [org.gradle.messaging.remote.internal.inet.InetAddressFactory] Adding IP addresses for network interface p10p1
17:49:57.489 [DEBUG] [org.gradle.messaging.remote.internal.inet.InetAddressFactory] Is this a loopback interface? false
17:49:57.491 [DEBUG] [org.gradle.messaging.remote.internal.inet.InetAddressFactory] Is this a multicast interface? true
17:49:57.492 [DEBUG] [org.gradle.messaging.remote.internal.inet.InetAddressFactory] Adding remote address /169.254.8.98
17:49:57.493 [DEBUG] [org.gradle.messaging.remote.internal.inet.InetAddressFactory] Adding remote multicast interface p10p1
17:49:57.494 [DEBUG] [org.gradle.messaging.remote.internal.inet.InetAddressFactory] Adding IP addresses for network interface p9p1
17:49:57.496 [DEBUG] [org.gradle.messaging.remote.internal.inet.InetAddressFactory] Is this a loopback interface? false
17:49:57.497 [DEBUG] [org.gradle.messaging.remote.internal.inet.InetAddressFactory] Is this a multicast interface? true
17:49:57.499 [DEBUG] [org.gradle.messaging.remote.internal.inet.InetAddressFactory] Adding remote address /fe80:0:0:0:12c3:7bff:fe46:5caf%2
17:49:57.500 [DEBUG] [org.gradle.messaging.remote.internal.inet.InetAddressFactory] Adding remote address /10.0.0.45
17:49:57.501 [DEBUG] [org.gradle.messaging.remote.internal.inet.InetAddressFactory] Adding remote multicast interface p9p1
17:49:57.503 [DEBUG] [org.gradle.messaging.remote.internal.inet.InetAddressFactory] Adding IP addresses for network interface lo
17:49:57.504 [DEBUG] [org.gradle.messaging.remote.internal.inet.InetAddressFactory] Is this a loopback interface? true
17:49:57.505 [DEBUG] [org.gradle.messaging.remote.internal.inet.InetAddressFactory] Is this a multicast interface? false
17:49:57.507 [DEBUG] [org.gradle.messaging.remote.internal.inet.InetAddressFactory] Adding loopback address /0:0:0:0:0:0:0:1%1
17:49:57.508 [DEBUG] [org.gradle.messaging.remote.internal.inet.InetAddressFactory] Adding loopback address /127.0.0.1
17:49:57.515 [DEBUG] [org.gradle.messaging.remote.internal.inet.TcpIncomingConnector] Listening on [73551d2b-fa6b-4f37-8520-8694106b50e7 port:49792, addresses:[/0:0:0:0:0:0:0:1%1, /127.0.0.1]].
17:49:57.521 [DEBUG] [org.gradle.launcher.daemon.server.Daemon] Daemon starting at: Sun Jan 25 17:49:57 EST 2015, with address: [73551d2b-fa6b-4f37-8520-8694106b50e7 port:49792, addresses:[/0:0:0:0:0:0:0:1%1, /127.0.0.1]]
17:49:57.523 [INFO] [org.gradle.launcher.daemon.server.DomainRegistryUpdater] Advertising the daemon address to the clients: [73551d2b-fa6b-4f37-8520-8694106b50e7 port:49792, addresses:[/0:0:0:0:0:0:0:1%1, /127.0.0.1]]
...
[org.gradle.messaging.remote.internal.inet.TcpIncomingConnector] Cannot accept connection from remote address /10.0.0.45.

被防火墙阻挡了吗?VirtualBox配置有问题吗? - Jerry101
我正在本地主机和裸机上运行。它只是将连接源从10.0.0.45设置为127.0.0.1。 - samoz
如果您可以使用allowRemote=true初始化Receiver实例,那么将允许这些连接。http://gradle.org/docs/current/userguide/build_environment.html#sec:gradle_configuration_properties提到了一些守护进程属性。 - Jerry101
5个回答

2
我安装新的Android Studio遇到了非常相似的问题。花了最后的42小时搜索并尝试各种修复方法。我很高兴我没有像一些人建议的那样删除我的防火墙——因为防火墙日志实际上帮助我诊断了这个问题的根本原因——即Android Studio正在将一个来自IPv4套接字的消息发送到Gradle Java.exe进程的IPv6套接字!
在诊断出问题后,只需要搜索正确的答案即可。参考这篇文章:https://superuser.com/questions/453298/how-to-force-java-to-use-ipv4-instead-ipv6 这对我解决了问题。

1
这似乎是一个已知的错误,根据https://code.google.com/p/android/issues/detail?id=82347提供了一个解决方法,对一些人有效。
The only workaround for me is to use ipv6 instead of ipv4 : in bin/studio.vmoptions or bin/studio64.vmoptions (depending on if you are in 32 or 64 bits), change the line -Djava.net.preferIPv4Stack=true by -Djava.net.preferIPv6Stack=true

此外,可能有一种方法可以配置守护进程以允许远程连接。

我实际上是那个 bug 上的第七个评论者,说它对我不起作用 :) - samoz
或者说,我无法弄清楚如何在我的机器上使其工作。 - samoz

1

正如日志所示,Gradle守护进程监听回环接口(IPv4和IPv6):IPv4/IPv6。

17:49:57.523 [INFO] [org.gradle.launcher.daemon.server.DomainRegistryUpdater] Advertising the daemon address to the clients: [73551d2b-fa6b-4f37-8520-8694106b50e7 port:49792, addresses:[/0:0:0:0:0:0:0:1%1, /127.0.0.1]]

错误信息显示,连接来自地址10.0.0.45,该地址未被允许连接:
[org.gradle.messaging.remote.internal.inet.TcpIncomingConnector] Cannot accept connection from remote address /10.0.0.45.

请参考https://dev59.com/_ILba4cB1Zd3GeqPYwff#32777685,了解可能的解决方案。


1
如果你正在使用带有Killer Wireless 1535的游戏笔记本电脑进行编程,我建议在Killer Command Center中关闭Killer Double Shot Pro。这对我很有效!!

0

卸载Killer控制中心和驱动程序是解决方案。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接