方法
打开AndroidStudio主程序所在目录,右键编辑文件“studio64.exe.vmoptions”,将第19行的-Djava.net.preferIPv4Stack=true
改成-Djava.net.preferIPv4Stack=false
。见文章
一些说明
原本的配置文件中的-Djava.net.preferIPv4Stack
应该是开启唯IPv4
,也就是说,Android stdio只会从IPv4通道连接网络。在默认情况下,我屏蔽掉IPv4网络,也就是仅仅留下IPv6,并且,Android Studio无法更新SDK,在连接上IPv4的情况下,可以看到Android Studio连接了dl.google.com
,并且此站点可以通过IPv6连接,但是Android Studio在纯IPv6网络情况下无法连接网络,那么问题就出在Android Studio身上了,更改主程序的配置文件可以使用IPv6网络。
原文作者将配置文件改为
1 | -Djava.net.preferIPv4Stack=false |
开启了唯IPv6
,那么切换到IPv4环境时又需要再改一次配置文件,那么倒不如把唯IPv4
关掉,这样到底是使用IPv6还是IPv4,就由主机所连接的网络来决定了,而不是由Android Studio和网络环境来决定。
学校的网络同时支持IPv6和IPv4,能走IPv6的时候,就不走IPv4了,毕竟更新一个SDK也是好多GB流量。
网络环境更改办法
For Windows
将以下内容添加到C:\Windows\System32\drivers\etc\hosts
1 | 2401:3800:4001:806::1009 dl.google.com |
在电脑能连接上IPv6网络的情况下,连接dl.google.com
的流量会被引向IPv6通道,即使电脑连接了IPv4网络。若电脑仅连接了IPv4,则此规则不生效。
For Linux
Linux的hosts文件在/etc/hosts
,同样把上面的地址添加就好,但是这样有一个弊端——在电脑处于纯IPv4网络时,规则仍然生效,于是Android Studio又连不上网络了。
最优的解决办法是更改电脑所连接的网络环境的hosts文件,比如路由器的,在能连接上IPv6的路由器上,更改其hosts
文件,这样电脑连接这个路由器的时候,就能走IPv6,电脑连接上其他仅支持IPv4的网络时,走IPv4,不用更改本机的hosts环境,就不用在切换网络之后,还要更改本机的hosts文件。感觉这点Linux就不如Windows了。
其他的一些想法
在很久很久以前,Android_SDK的源还在国外,这可把国内的开发者弄得苦不堪言,SDK就足够折腾一番了,现在的dl.google.com
主机位于北京,速度还不错,延迟也很低。对于谷歌来说,在国内多部署几个服务器并不算什么,但是,口碑一下子涨了好多吧,毕竟方便了那么多,而且支持IPv6,真是要给谷歌老大几朵花了。
其实吧,说到底,还是为了钱,大陆毕竟是一块大蛋糕,谷歌也想来分一块,不知道什么时候来呢?
And,和Android 8一块来的,谷歌也带来Kotlin对安卓的支持,这是不是对Oracle的一点警示呢。