Android Studioのプロクシ環境対策の整理

はじめに

久しぶりにProxy環境で動かしていて、結構ハマったので書き出しておく

動作環境

  • windows 10
  • 8G
  • SSDタイプのデスクトップ
  • AS 2.3.3 / AS 3.0-Beta7
  • gradle plugin 2.3.3 / gradle plugin 3.0-beta7
  • gradle runtime-4.2.1-bin

前提条件

以下のproxy設定のどちらかを設定しないとつながらない状態(on Password無し)

  • https://myproxy.co.jp/proxy.pac
    • 最初教えてもらったのはこっちの方。。 PCのネットワークのproxy設定だとこっちでよかった。。。
  • myproxy.co.jp:8080
    • 後から情報貰ったorz

IDEでのproxy

主に GUIからのSDK Updateに使われている

settingからproxyで検索

下記はポートを入れる例。URLの場合はauto proxyの方にURLを入れる

f:id:kimukou_26:20171012231007p:plain

Gradle Sync時のproxy

Gradleは外部実行だから、ココらへんが引っかかる。

wraper自体のダウンロード

gradlew または gradlew.bat の先頭に下記書きましょうという話がありましたが、これgitとかにコミットされてしまうとよく忘れる・・*1

set JAVA_OPTS=-DproxyHost=myproxy.co.jp -DproxyPort=8080 -Dhttp.proxyUser= -Dhttp.proxyPassword= -Dhttps.proxyUser= -Dhttps.proxyPassword=

自分がやってるのは下記の方法

  • warper/gradle-warper.properties
#distributionUrl=https\://services.gradle.org/distributions/gradle-4.2.1-bin.zip
distributionUrl=file\:C\:/android/sdk/gradle-4.2.1-bin.zip

gradleの実行自体で引っかかる箇所

一時期 httpsでアクセス出来ない場合は、httpでアクセスすればいい? みたいな話がありましたが

  • root/build.gradle
jcenter()
=>
jcenter { url "http://jcenter.bintray.com" }

これ google()レポジトリだと httpsしかサポートしてないので無理>< *2

google()
or
maven { url 'https://maven.google.com'}
or
maven { url 'https://dl.google.com/dl/android/maven2/''}

で、結局は下記の位置にgradle.proptiesを置いて対処 *3

  • $HOME/.gradle/gradle.properties
systemProp.http.proxyHost=myproxy.co.jp
systemProp.http.proxyPort=8080
systemProp.http.proxyUser=
systemProp.http.proxyPassword=
systemProp.https.proxyHost=myproxy.co.jp
systemProp.https.proxyPort=8080
systemProp.https.proxyUser=
systemProp.https.proxyPassword=

で何気に忘れてたのが、

  • systemProp.https の方設定しないとSSL通信がエラー
  • systemProp.https.proxyUser/proxyPassword とかない場合は指定しない。下手に指定すると誤爆する

  • 誤爆した例(ネットサンプルのコピペしたので・・<汗)

systemProp.https.proxyUser=****
systemProp.https.proxyPassword=****

emurator

よくググると下記な手順が出てくるんですが、これだめ・・・。

httpsのものを指定しているからでしょうか・・・(汗

# emulator -list-avds
Nexus_5X_API_23

//NG
# emulator -avd Nexus_5X_API_23 -http-proxy https://myproxy.co.jp/proxy.pac
//NG
# emulator -avd Nexus_5X_API_23 -http-proxy myproxy.co.jp:8080

で色々と探した結果、other.xmlの設定をいじる

  • win
    • %USERPROFILE%/.AndroidStudioXXX/config/options/other.xml
  • mac
    • $HOME/Library/Preferences/AndroidStudioXXXX/options/other.xml ??

Macは、場所的に上の位置らしいんだけど、該当ファイルが見当たらず・・・??

例)

%USERPROFILE/AndroidStudio2.3/options/other.xml

  • other.xml (以前書かれていた手法)
<option name="USE_HTTP_PROXY" value="true" />
<option name="USE_PROXY_PAC" value="true" />
  • other.xml (現在)
# こっちはすでに存在しなかった・・・
<option name="USE_PROXY_PAC" value="true" />
<option name="USE_PAC_URL" value="true" />
<option name="PAC_URL" value="PACのURL" />

# こっちを書き換えた
<option name="USE_HTTP_PROXY" value="true" />
<option name="PROXY_HOST" value="PROXYのURL" />
<option name="PROXY_PORT" value="80(port)" />

Javadocのhttpアクセスを修正

  1. Setting>SDK 経由で、Documentation for Android SDK をダウンロードする
  2. sdk.table.xmlを開く。Windowsならばパスは、%HOMEPATH%.AndroidStudio2.3\config\options\jdk.table.xml
  3. http://developer.android.com/reference/ を 落としてきた位置のfile URLに変更する

例)

file://C:/android/sdk/platforms/android-22/data/res


その他的なこと

大体プロクシを設定している所は、OAuth系のURLを禁止にしていたりするのでユーザー登録/認証 が必要なソフトは使えない感じになる

SourceTree

Winだと

  • 1.7系を落としてきて使う
  • 期限が来たら、下記の◎のファイルをバックアップしてアンインストール
  • 下記のフォルダを消す
  • インストールし直す
  • 対象フォルダに下記の◎のファイルを上書きする
 C:\Users\<username>\AppData\Local\Atlassian\SourceTree\

bookmarks.xml //◎
opentabs.xml //◎
userhosts //★ これは見つからなかった。でも問題なかったorz

まあレガシーな話ですけどね・・。

proxy設定している部署に、SourceTreeの認証だけ通すように申請するとか言われたけど、

結局1月たったけど結局放置なのはSierらしいw*4

まあAdobeとかのライセンスも、電話窓口で認証通してるらしいからなー

仕組み的に無理なんだとは思ってたりもしてる*5

*1:AndroidのViewには表示されないので・・

*2:下記を https=>http だとアクセス不可

*3:ASは位置固定なのでここみるしかない・・

*4:開発者の不便改善してもお金に鳴らないので基本無視されるなう・・

*5:外資系だとこういうこと無いので、海外のFWに依存するのが間違ってるんですよね〜