読者です 読者をやめる 読者になる 読者になる

sos の 作業メモ

プログラミングや英会話学習、マイルや旅行、日常生活など。最近はWebFormなASP.NETのお守りがお仕事です。

日々の生活にhappyをプラスする|ハピタス Gポイント

Android Studio 0.1.3 - 0.1.9で もっと簡単にGoogle Play servicesを含んだGradleベースの新規プロジェクトを作る方法

android 開発環境 GoogleMaps

2013/07/12追記

Android Studio 0.2.0-0.2.3でGoogle Play Servicesを使う新規プロジェクトを作る - sos の 作業メモ

0.2.0以降用の記事を書きました。

2013/07/03追記

0.1.9でも問題ありませんでした

2013/06/28追記

0.1.8の記事でも書きましたが、0.1.7でのバグは修正されています。"Sync Project with Gradle Files"もちゃんと機能するようになってるし、これでgradlewの出番もちょっと減るかも?

あと、プロジェクトのbuild.gradleはデフォルトのままで大丈夫っぽいので、下の説明からばっさり削除しました。

2013/06/26追記

0.1.7がリリースされた記事でも書きましたが、0.1.7で新規プロジェクトを作って、Google Play services等の使用をbuild.gradleに宣言し、./gradlew clean buildで aar等を生成し、Android StudioでbuildしようとするとBuildConfig.javaや R.java等が重複というエラーが発生して失敗するようになります。

0.1.6で作ったプロジェクトを0.1.7のAndroid Studio上でbuildするのは問題ありませんので、(./gradlew clean buildしてもOK)、しばらくは0.1.6も残しておいて、新規プロジェクトはこちらで作るようにした方が安全のようです。

2013/06/22追記

0.1.6でも新規プロジェクト作成から Google Play servicesと、自作のライブラリプロジェクトを含んだGradleベースのプロジェクトを問題なく作成できるのを確認しました。

自作ライブラリプロジェクトの組み込み方法は、以前の記事そのままですが、もうちょっと落ち着いたらまとめたいところ。syncボタンでaarを認識してくれますし、aarよりlibプロジェクトの優先順位をあげればソース表示もちゃんとそっちへ飛ぶしで今の所不自由はなし。

ウィザードとかもだんだん賢くなっていて嬉しい限りですね。


以下本文


以前の記事の方法でもいけるのですが、 こちらの記事でも書いたように、 せっかくGoogle Play servicesの組み込みが簡単になったことですし、これからは新しい方法でやっていきましょう。

といっても、そんなに身構えなくても大丈夫、ちょろっとbuild.gradleの書き方が変わったのと、settings.gradleの記述やProject Structureでの依存関係の設定が不要になった位です。

以下は全て Mac OS X 10.8の環境を前提としています。

新規プロジェクト作成

f:id:sos_jp:20130524130731p:plain

いつもの画面です。 アプリ名、アプリモジュール名、パッケージ名、プロジェクトの保存先、SDKのバージョン等を入力します。アプリモジュール名 + 'Project'がデフォルトのプロジェクトフォルダになります。

あとは適当にnextを押していってプロジェクトを作成。

f:id:sos_jp:20130524131339p:plain

この段階でRunすると、Hello Worldなアプリが動きます。

Android SDK Managerで2つのRepositoryをインストール

Android Support Repositoryと Google Repositoryをまだインストールしていない場合は、 Android SDK Managerを起動して、これらを追加してください

f:id:sos_jp:20130606203939p:plain

Gradle関係

Android用の新しいビルドシステムに採用されたGradleは、build.gradleというファイルの内容に従ってビルドを行います。(要するにビルド用のスクリプトファイルと思えばいいらしい)

build.gradleは、プロジェクトやアプリモジュール、ライブラリモジュール、それぞれに必要ですので、ここからはそれらの設定を行います。

プロジェクトのbuild.gradle

特に編集しなくても大丈夫です。

アプリモジュールのbuild.gradle

アプリモジュール本体のbuild.gradleを設定します。

[/MyStudioApp/build.gradle]

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.4'
    }
}
apply plugin: 'android'

dependencies {
    compile 'com.google.android.gms:play-services:3.1.36'
    compile 'com.android.support:support-v4:13.0.0'
}

android {
    compileSdkVersion 17
    buildToolsVersion "17.0.0"

    defaultConfig {
        minSdkVersion 8
        targetSdkVersion 17
    }
}

ここでの肝は dependenciesの中。 ADT r22で追加された、Google Play servicesとSupport Libraryのリポジトリからライブラリを探すように指定します。IDEA側の依存関係の面倒もplug-inが自動的に見てくれますので、ProjectStructureを自分で設定する手間が減っています。 (ソースやJavaDocを追加するためにはやっぱり手作業が必要になったりもしますが、詳しくは過去のこの辺の記事を参照してください)

.bash_profile

JDK6はデフォルトがSJISですので、環境変数の_JAVA_OPTIONSを使ってUTF-8として解釈するように設定しておきます。

[~/.bash_profile]

export _JAVA_OPTIONS='-Dfile.encoding=UTF-8 -Dgroovy.source.encoding=UTF-8'

こうしておけばOKです。idea.vmoptionsとJAVA_OPTSを使ったりする方法もあるのですが、AndroidStudioとgradlew両方を一つで済ませたいのでこれにしています。

Sync Project with Gradle Files

Gradle関係のファイルを編集しましたので、AndroidStudioにいろいろと再構築させるために Sync Project with Gradle Files ボタンを押します。

f:id:sos_jp:20130607114402p:plain

別の方法としては、ターミナルから gradlewでビルドする方法もあります。 ターミナルを開いて、プロジェクトのフォルダに移動して、

$ ./gradlew clean build

と入力してやれば、リビルドされます。リビルドしたら一旦AndroidStudioを再起動してやってください。

0.1.7まではSyncボタンがいまいち信用できなかったのですが、0.1.8からはすっかり大丈夫になったっぽいです。とはいえ、gradlewでの扱いも知っておいて損はないと思いますので、なにか問題が起きたら ./gradlew clean build して Android Studioを再起動ってのは覚えておいて損はないかも。

コーディング開始

ここまでくればあとは自由。好きにコーディングを初めてください。 他のライブラリプロジェクトを追加する場合は、以前の記事の ライブラリ追加(settings.gradleやアプリモジュールのdependencies)の手順が使えます。