0%

Android Studio启用IPv6支持

方法

打开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
2
-Djava.net.preferIPv4Stack=false
-Djava.net.preferIPv6Addresses=true

开启了唯IPv6,那么切换到IPv4环境时又需要再改一次配置文件,那么倒不如把唯IPv4关掉,这样到底是使用IPv6还是IPv4,就由主机所连接的网络来决定了,而不是由Android Studio和网络环境来决定。

学校的网络同时支持IPv6和IPv4,能走IPv6的时候,就不走IPv4了,毕竟更新一个SDK也是好多GB流量。

网络环境更改办法

For Windows

将以下内容添加到C:\Windows\System32\drivers\etc\hosts

1
2
2401:3800:4001:806::1009 dl.google.com
2401:3800:4001:806::1009 dl.l.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的一点警示呢。