Android
gradle
proxy

gradleを認証付きプロキシ下でコマンドラインから使う

前座

開発なのに低スペPCしかなく、AndroidStudioでコーディングなんてできないぜって人や、人から貰ったソースコードを簡単にビルドしたいなんてときにgradlewコマンドでターミナル上からビルドすることはよくあるとおもう。

$ ./gradlew assembleDebug

問題

ところが、最近になって突然、以下のエラーが出るようになった。

Exception in thread "main" java.lang.RuntimeException: java.io.IOException: Unable to tunnel through proxy. Proxy returns "HTTP/1.1 407 Proxy Authentication Required"

認証付きプロキシを使って外部と接続してると、その認証がうまくいっていない。エラーの内容からすると、プロキシを通そうとしているんだけど、認証は通らないようだ。奇妙なことに、AndroidStudioではうまくビルドできている1

解決

Java8のどこからかのバージョンからBasic認証が禁止されていたみたい2。そしてこれを無効化し、Basic認証を使えるようにするにはコマンドライン引数を渡してやればいいみたい。

gradlew(Windowsの場合gradlew.bat)を開き、以下を追加する。

DEFAULT_JVM_OPTS="-Djdk.http.auth.tunneling.disabledSchemes=\"\""

これで通った!!

参考情報