5月29日、明けて30日の2日間でAndroid Studio の v0.1.1 と v0.1.2 が立て続けにリリースされました。ファーストリリース(5月15日)から2週間で出てくるとは良いペースですね。
それでもしばらくはv0.1を使い続け、頃合いをみてアップデートしようと思っていたのですが、リリースのされ方がちょっと放っておけない様子だったので、予定を変更して「Android Studioのアップデートの正しい付き合い方 」について説明したいと思います。
注意: 本文中に登場する<AS_INSTALL>
などのシンボルの意味は、第2回の表2 を参照してください。
Android Studioのリリースのされ方
まだアップデートも数回ですし、改善要望を出しているわけではないので、これがGoogleのスタンスと決めつけるのは時期尚早ですよ、と最初に但し書きしておきます。
v0.1.1とv0.1.2がどうリリースされたか、という結果だけで言うと、新しいバージョンがリリースされると、旧バージョンは入手不可能になる場合があります。
Android Studioのダウンロードページ を見ると、最新版の v0.1.1 のリンクのみで以前の v0.1 のリンクが無くなってしまいました(図1 ) 。
図1 Android Studioのダウンロードページ(2013/5/30現在)
Android Studioは自分自身を更新するアップデート方式と、新たにインストールパッケージをダウンロードしなおす新規インストール方式の2通りありますが、すでにリリースされた各バージョンは次のようになっていました。
v0.1.1 …アップデート方式とダウンロード方式の2通りで公開
v0.1.2 …アップデート方式のみで公開
ポリシーがあるようでなさそうなリリース方式ですね。
一連のアップデートから推測するに、アップデート方式が基本で、場合に応じてインストールパッケージの配布を行うというポリシーなのでしょう。ただ、過去バージョンの入手が困難になるのは、ちょっと困るなと思いました。
昔のバージョンが手に入らないとどう困るかというと、Early Access Preview(EAP)は言うなれば、βもしくはα版のようなもので不安定なのがお決まりです。当然、利用する側もそれを覚悟の上で使っているのですが、新しいバージョンが試用に堪えないほど不安定だったら前のバージョンに戻れる、という保証があってこそ人柱になれるものでしょう。それを後戻り無しというのはさすがに抵抗があります。
Android Studioのアップデートについて
「アップデート通知が来たけど、どうなるかわからないので放置していた」という人向けに、アップデートの一連の流れを紹介します。ダウンロード方式はいわゆる新規インストールと同等のため、説明は割愛します。
Android Studio自身によるアップデート方法は「Update Info」ダイアログの通知から開始します。
図2 「 Update Info」ダイアログ(Windows版)
アップデート情報はAndroid Studioを立ち上げていれば何もしなくとも通知が来ると思いますが、明示的にチェックする場合はアプリケーションメニューの「Check for Update...」から行います(Windowsの場合は「Help→Check for Update...」 ) 。
一応、アップデートの設定箇所を説明しておきます。設定箇所は「Preferences(Settings) →Updates」にあります。EAPを使っていて、ここの設定をOFFにするのは得策ではありませんが、いずれ正式版がリリースされたときに、この設定をお好みのものに変更すると良いでしょう。
図3 「 Preferences / Updates」の設定画面
話が逸れたついでですが、Android Studioのアップデート情報は以下のURLから取得しているようです。
ベースとなったIntelliJのアップデート情報 とは異なるURLだったので「なるほど、やっぱりAndroid StudioはGoogleから提供するものなのだ」と妙に納得しました。
なお、v0.1.1の後にIntelliJ側(IDEA13 EAP)のアップデートが公開され、その後 v0.1.2がリリースされました。お互いのビルド番号から、一連のアップデートに関連性が薄そうだと推測できます(表1 ) 。
表1 Android StudioとIDEA13 EAPのリリースとビルド番号
リリース日 プロダクト ビルド番号
2013/5/29 Android Studio v0.1.1 130.687321
2013/5/29 IntelliJ IDEA 13 EAP 130.754
2013/5/31 Android Studio v0.1.2 130.692269
Android StudioとIDEA13のビルド番号の関係について、どこかで明言されているわけではありませんが、IDEA13 EAP側のアップデート情報 に記載された修正情報が、Android Studioにも反映されているかどうかから、ある程度の関連が確認できました。
話を戻します。「 Update Info」によるアップデートはパッチ提供による差分アップデートのため、ダウンロードサイズも小さく比較的短時間で終わります。ただ、今の環境を書き換えてしまうのが、時としてデメリットになります(今回の件などがそうでしょう) 。
ダウンロード方式のインストールパッケージからアップデートするのは手堅いやり方ですが、Windows版は毎回インストーラ経由で行うことになるので、ちょっとした手間です。ただしインストールパッケージを手元に残す意味はあるので、インストールするかどうかは別として入手だけはしておいたほうがいいでしょう(当然、インストールパッケージが提供されている時に限ります) 。
アップデートの実際
では「Update Info」経由によるアップデートの流れを順に見ていきしょう。「 Update Info」ダイアログが表示され「アップデートしますか?」と聞いてきます。
図4 「 Update Info」ダイアログ(Mac版)
まだその気じゃない場合は「Remind Me Later 」を、その気があれば「Upadte and Restart 」を押してください。今回のアップデートは見送るという場合は「Ignore This Update 」を押しますが、間違ってこのボタンを押すと、次のアップデートが出てくるまでアップデート通知が来なくなりますので気をつけてください。それと、なぜかわかりませんが、Mac版とWindows版でボタンの場所が違います、両方使っている方は押し間違える確率が高いので特に気をつけてください。
コラム:間違って「Ignore This Update 」を選択した場合
あとで心変わりした、または間違って「Ignore This Update 」を選択した場合は、<AS_CONFIG>/options/other.xml
のリスト1 で示した部分を削除してから再チャレンジしてください。このファイルを編集するときは、Android Studioを終了しておいてください。
リスト1 <AS_CONFIG>/options/other.xml(一部抜粋)
<option name="myIgnoredBuildNumbers">
<value>
<list size="1">
<item index="0" class="java.lang.String" itemvalue="130.687321" />
</list>
</value>
</option>
「Update and Restart 」を選択すると、アップデートサイトからパッチのダウンロード~パッチ適用が順だって行われます。この間は特にすることはなく、ただじっと見ているだけです。
第2回のおまけ で紹介したように<AS_INSTALL>
内部のファイルを変更していた場合は、図5 のようにアップデートを続行して良いか問い合わせてきます。
図5 アップデートを続行するかの問い合わせ
図5の例では『bin/studio.exe.vmoptions
を更新しようとしたが、すでに編集済みだったので、無視して良いか?』と聞いています。それで良ければ「Proceed 」ボタンを押してアップデートを続行します。
「Cancel」ボタンを押すとアップデートを中断し、元の状態に戻ります。この問い合わせが出る場合、対象となるファイルを意図的に更新していることが大半なので、「 Cancel」ボタンを選ぶことはほとんどないでしょう。
無事アップデートが完了すると、Android Studioが立ち上がります。アバウト画面やウィンドウのタイトルバーなどでビルド番号を確認してアップデートが適用されたかどうかを確認しましょう。
図6 Android Studioのタイトルバーにビルド番号が表示されている
アップデートの流れがIntelliJのものと同等なので、おそらくAndroid Studioもアップデート対象は本体(<AS_INSTALL>
)に対してのみ行われます。<AS_HOME>
(<AS_CONFIG>
)側にパッチがあたるケースは過去に例がありません。
余談になりますが、IntelliJと同等と考えると、アップデートが常にパッチ適用方式であるとは限らないでしょう。どういうロジックでそうなっているのかわかりませんが、アップデートの内容によっては、パッチ適用方式ではなくインストールパッケージをダウンロードし直すパターンがIntelliJだとあります。
図7 IntelliJの「Update Info」画面
もしかしたら、Android Studioもダウンロード方式でしかアップデートできないバージョンが出てくるのかもしれませんね。
異なるバージョンのAndroid Studioを共存させる
すでに説明したとおり、何の準備も無しにアップデートを実行してしまうと、今のバージョンが上書きされてしまいます。「 人柱たる者、常に最新を使うのが基本だ」という雄々しい考えも良いですが、せめて1つ前のバージョンくらいは持っておきたいのが人情でしょう。
そこでAndroid Studioの構成を逆手に取りつつ、異なるバージョンのAndroid Studioを共存させる方法を考えてみました。
まず、Android Studioの構成やアップデートの特性を整理してみましょう。
Android Studio本体は<AS_INSTALL>
に格納されており、アップデートも<AS_INSTALL>
に対して行われる
Android Studioの設定は<AS_HOME>
の<AS_CONFIG>
に格納されている
Android SDKはデフォルトだと<AS_INSTALL>/sdk
に格納されており、その設定は<AS_CONFIG>
に保存されている
Android SDKのベースJDKはデフォルトだとAndroid Studioを起動したJDKに設定されている(その設定は<AS_CONFIG>
に保存されている)
Windows版で第2回の手順 をまねた人は <AS_INSTALL>/jre
がベースJDKになっています。
図にするとこのような状態です(図8 ) 。
図8 Android Studioと各種SDKの関係
これを次の作戦で複数バージョンを共存させてみます。
Android SDKをAndroid Studioから抜き出して、どこか別の場所に移す(<ANDROID_SDK_HOME>
)
(Windowsの場合)<AS_INSTALL>/jre
がAndroid SDKのベースJDKになってる場合は、これとは別にAndroid SDK用のJDKを指定する(<JAVA_HOME>
)
バージョンごとに<AS_INSTALL>
を分ける
アップデート方式は、既存の<AS_INSTALL>
をコピーしてから、コピーした側に対して行う
ダウンロード方式は、既存とは別の<AS_INSTALL>
を指定してインストールする(Macはアプリ名をリネームするだけ)
要するに図9 のような状態にすることがこの作戦の全容です。
図9 Android Studioを複数共存させるための作戦
設定情報(<AS_CONFIG>
)は共用するので、Android SDKやJDKの外だしは一度行うだけで良いでしょう。
ではv0.1からv0.1.1へのアップデートを例に、手順を説明していきます。
アップデート前の下準備
まずは複数のAndroid Studioを共存させるための下拵えをしましょう。Android StudioはAndroid SDKを内包していますが、Android StudioのバージョンごとにAndroid SDKを多数用意していても仕方がないので、まずこれを抜き出します(<AS_INSTALL>/sdk
をどこか適当な場所に移動しましょう) 。
移動する場所はどこでもいいのですが、説明の都合上、ホームディレクトリ(<HOME>
)にAndroidSDK
という名前で移動することとします(図10 ) 。
図10 Android SDKの移動
その後、Android Studioを立ち上げAndroid SDKの設定を更新します。SDKの設定方法への辿り着き方は多数あります。次のどの方法でもよいので、画面を開いてください。
ウェルカム画面の「Configure → Project Default → Project Structure」
メニューバーから「File → Project Structure」( ※ v0.1.1では開けません。v0.1.2では警告付きで開きます)
メニューバーから「File → Other Settings → Default Project Structure」
すでに「Android SDK」が登録済みですが、SDKの場所が<AS_INSTALL>/sdk
になっているので、これを先ほど移動した場所<HOME>/AndroidSDK
のものに定義し直します。この時、既存の「Android SDK」を修正するとどうしてか「Build target」が[None] になるため、図11 の手順どおり既存の「Android SDK」を削除して、再度登録し直しましょう。
図11 Android SDKを設定し直す(クリックすると操作の動きがわかります)
Android SDKを再登録しなおすと名称が「Android SDK Platform」で登録されますが、念のため以前と同じ名称「Android SDK」に直しておきます。
ここからは、Windows版でかつ第2回の手順 でAndroid Studioの起動用JDKを<AS_INSTALL>/jre
に設定した人だけが対象です。
「Android SDK」と同じくJDKも登録済みです。準備したJDKのバージョンによりけりですが、「 1.6」とか「1.7」という項目があると思います。このJDKの場所が<AS_INSTALL>/jre
になっているので、こちらも<JAVA_HOME>
に登録しなおしましょう。手順は、先ほどのAndroid SDKとほぼ同じで、いったん既存のJDKを削除してから、新しくJDKを登録します。
図12 Java SDKを設定しなおす
既存のJDKと異なるバージョンのJDKを登録した場合、Android SDKの「Java SDK」部分が空欄になってしまうので、合わせてこちらも修正してください。
結局<JAVA_HOME>
にJDKを用意することになってしまいますが、仮に環境変数 JAVA_HOME
が定義されていてもAndroid Studioの起動は <AS_INSTALL>/jre
が優先されます。この手の話はなるべく環境に左右されないほうが望ましいため <AS_INSTALL>/jre
はあくまでAndroid Studioの起動用として残しておくことをオススメします。
これで下拵えはおしまいです。この準備作業は一度やっておくだけで結構です。
コラム:Android SDKの場所を移動したことによる注意点
Android SDKの場所を移動する前に、Android Studioで作成したプロジェクトに対してちょっとした修正が必要となります。プロジェクトトップディレクトリ(<PROJECT_HOME>
)直下のlocal.properties
ファイルにAndroid SDKのパスが定義してあるので、それを新しいAndroid SDKのパスに修正しなければなりません。
リスト2 <PROJECT_HOME>/local.propertiesの内容(抜粋)
# Location of the SDK. This is only used by Gradle.
# For customization when using a Version Control System, please read the
# header note.
sdk.dir=/Applications/Android Studio.app/sdk
このsdk.dir
の値を新しいAndroid SDKのパスに変更します。できる限り、この修正は該当プロジェクトをAndroid Studioで開く前に行ってください 。新しい値を調べたり打ち込んだりするのが億劫な場合は、適当なプロジェクトを新しく作成し、そこでできたlocal.properties
をコピーするのもひとつの方法です。
local.properties
はビルドに用いるGradleが参照する設定ファイルのようです。名前から察するにローカル環境用の定義ファイルだと思いますが、設定値が絶対パスというのはあまりよろしくないと思います。ちゃんと調べてないので詳細は不明ですが、絶対パス以外の指定方法があるとよいですね。
Android Studioのアップデート
ではAndroid Studioのアップデートを行ってみましょう。既存の <AS_INSTALL>
をコピーし、どちらか一方を起動してアップデートを行うだけです。どちらがどのバージョンか分かるようディレクトリ名やアプリケーション名にバージョン番号を付けておくと便利です。
図13 バージョンごとに<AS_INSTALL>を分ける
補足
これで複数のバージョンのAndroid Studioを共存させることができますが、異なるバージョンのAndroid Studioを同時に実行することはできません 。
理由は簡単で、同じ<AS_HOME>
を参照しているAndroid Studioのプロセスは1つしか起動できない制約があるからです。別の見方をすると<AS_HOME>
が異なれば複数のAndroid Studioを同時起動することができるというワケです。
図14 異なるバージョンのAndroid Studioを同時起動してみる
次回の予定
当初の予定だったプロジェクト構造や設定の説明を変更して、Android Studioのアップデートについて説明しまた。v0.1.1、v0.1.2の変更を見たところ、プロジェクト構造やその設定(Project Structure)は調整がまだまだ必要なようで不安定な要素が多いです。わかりやすい例で言うと、New Projectウィザードが作成したプロジェクトに対して、何かしらのライブラリを追加するだけでも簡単にはいきません。
プロジェクト設定部分が不安定とは言え、この件に触れないで説明を続けても、Android Studioの用途が極めて限定的になってしまいそうです(ホントに試用レベルでしか使えなさそう) 。
さすがにライブラリ追加も簡単にできないようでは、試用にも困ることがあると思いますので、次回は元の予定に戻り、Android Studioのプロジェクトの構造や設定について説明します。