Android Studio最速入門~効率的にコーディングするための使い方

第6回 Android StudioとGradle[後編]

この記事を読むのに必要な時間:およそ 9 分

後編にあたる今回は,Gradleのビルドスクリプトbuild.gradleを中心に,あんなこといいな,できたらいいなというTIPSを紹介します(と言ってもできないことが多いです)⁠ 今回紹介するTIPSのほとんどがバッドノウハウのカタマリです。Android StudioがEarly Access Previewであるため致し方無いことですが,開発が進むにつれ,ちょっとでも改善されていくことを願ってます。

Android StudioとGradleの小難しい関係

どうして前後編にもわたる話を長々と説明するハメになったかというと,Android StudioがビルドをGradleに委譲してしまったために尽きます。ビルドをAndroid StudioやEclipseなどの特定のIDEに依存せず,Gradleに一本化したことで,IDEからもコマンドラインからも同じ手順でビルドできる利点がありますが,Android Studioの連係がスムーズではないため,今のところデメリットのほうが強調されてしまっています。

図1 Android StudioとGradleの関係

図1 Android StudioとGradleの関係

たとえば,Android Studioが作成したプロジェクトにはGradleのコマンド(gradlewとgradlew.bat)も付属しており,JDKとAndroid SDKさえあれば,どこでもビルドができる配慮がされています図2)⁠

図2 Android Studioが作成したプロジェクトにはGradleが含まれている

図2 Android Studioが作成したプロジェクトにはGradleが含まれている

特定のIDEに依存せずにビルドできる発想はすばらしいのですが,まだ実装が追いついていないため,現状ではGradleAndroid GradleプラグインとAndroid StudioのProject Structureの両方を熟知してないと困ることが多いです。けれど,そんな人は多くはいませんよね……。

Android Studioでできること・できないこと

【注意】今回紹介した内容はAndroid Studio v0.1.2で確認しました(もう少しで原稿ができあがるという時にAndroid Studio v0.1.3がリリースされたので,v0.1.3での違いを追補として載せておきます)⁠

Android Studioのプロジェクトを扱う上で,よく躓きそうな点をTIPS集としてまとめてみました。Android Studioだけでは解決できず,コマンドラインからGradleを使う場合もありますが,その時は,プロジェクトに付属しているgradlew / gradlew.batコマンドを用いることとします。

予備知識として,Android Studioが使うGradleとコマンドラインgradlewが使うGradleの関係をおさえておきましょう図3)⁠

図3 GradleのコマンドラインとAndroid Studioの関係

図3 GradleのコマンドラインとAndroid Studioの関係

どちらもGradle本体<HOME>/.gradleは同じものを使っているのですが,呼び出し方法の違いから若干の差異が出てきます。

[TIPS#1]ときおりヘンなダイアログが出るんですが,OK押していいんですか?

Android Studioでプロジェクトを開いたときに図4のようなダイアログが出てくることがあります。

図4 ⁠Import Gradle Projects」ダイアログ

図4 「Import Gradle Projects」ダイアログ

「Gradleの構造から外れた Module なんで,Projectから削除してよいか?」と聞いているんですが,間違っても「OK」を押さないでください。押すと無慈悲にもModuleの定義ファイル(*.iml)が削除されてしまいます図5

図5 うっかり「OK」を押してModuleが削除されたProject

図5 うっかり「OK」を押してModuleが削除されたProject

Android Studioが何を検知してこのダイアログを表示しているのかわかっていませんが,build.gradleを修正した後にこのダイアログが出てくる傾向があるようです。気を利かせているつもりなのですが,かなり破壊的な事をしでかすので,このことはよく覚えておいてください。

それでも,間違って「OK」ボタンを押してしまった場合は,図6のようにメニューバーから「File → Import Module...」を選び,<PROJECT_HOME>/build.gradleをインポートすることで復活が可能です。

図6 Gradleプロジェクトをインポートしなおす(クリックすると動きがわかります)

なにより,このダイアログが出る理由は何なんでしょうかね。バグですかね? 最近見なくなったので,解決済みの不具合なのかもしれません。

著者プロフィール

今井勝信(いまいまさのぶ)

システムエンジニア。日本ユニシス株式会社所属。仙台在住。

Android開発はまったくやったことがないけれどIntelliJ IDEAが大好き。

Twitter: @masanobuimai

コメント

コメントの記入