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

第6回 Android StudioとGradle[後編]

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

[TIPS#5]Gradleのタスクを実行したいんですけど,どうしたらいいんでしょう?

どういうわけか,Android StudioからGradleの任意のタスクを実行できないようです。v0.1.2まではメニューバーの「Build -> Rebuild Project」を行ってもgradlew cleanは実行されませんでした。

v0.1.3からは「Rebuild Project」を実行すると gradlew clean assemble相当のことをするようになりました。それでも,それ以外のタスクを実行する手段はありません。結局のところコマンドラインからGradleを実行するのが確実な方法と言えます。

Windows版のAndroid Studioに限った話ですが,外部ツール(External Tools)にコマンドプロンプトcmd.exeを登録することで,ちょっとだけ得した気分を味わえます。図19のように「Preferences / External Tools」でコマンドプロンプトを登録します。

図19 ⁠Settings / External Tools」にコマンドプロンプトを登録

図19 「Settings / External Tools」にコマンドプロンプトを登録

表1 ⁠Edit Tool」ダイアログの入力値

項目
Namecmd
Options"Synchronize files after execution"と"Open console"にチェック
Show in"Main menu"にチェック
ProgramC:\Windows\System32\cmd.exe
Working directory$ProjectFileDir$

メニューバーの「Tools」内に登録したコマンド名「cmd」が表れますので,それを実行します。

図20 メニューバー「Tools→cmd」でコマンドプロンプトを実行

図20 メニューバー「Tools→cmd」でコマンドプロンプトを実行

すると,図21のようにRunツールウィンドウ内にコマンドプロンプトが張り付きますので,そこで gradlewなどのコマンドを実行できます。

図21 Runツールウィンドウにコマンドプロンプトが張り付く(クリックすると動きがわかります)

Mac版で同様のこと/bin/bashを登録してみる)を試してみましたが,プロンプトが表示されないなど,使いやすいものではありませんでした。Mac版やLinux版の場合は,ターミナルをExternal Toolsに登録してラウンチャー代わりに使うのがせいぜいかと思います。

ちなみに,Android Studio v0.1.3から,IntelliJにあった「Gradleツールウィンドウ」が復活しました。まだ何のタスクも表示されませんでしが,アップデートが進めば,ここからGradleのタスクを実行できるのでは?と期待が膨らみます。

図22 まだ何も表示されないGradleツールウィンドウ(v0.1.3)

図22 まだ何も表示されないGradleツールウィンドウ(v0.1.3)

[TIPS#6]Javaのソースコードに日本語を入れたらエラーになりました

図23 日本語を含むJavaのソースコード

図23 日本語を含むJavaのソースコード

WindowsやMac(でJDK6を使ったとき)に起こる問題です。筆者が試したところ,Android Studio上で問題になったのを見かけなかったのですが,コマンドラインからGradleを実行した場合は100%再現しました。

図24 コマンドラインからGradleでビルド(Windows:クリックすると動きがわかります)

(Windows)` &title=`図24 コマンドラインからGradleでビルド(Windows)` &width=`400` />

図25 コマンドラインからGradleでビルド(Mac&JDK6:クリックすると動きがわかります)

(Mac&JDK6す)` &title=`図25 コマンドラインからGradleでビルド(Mac&JDK6)` &width=`400` />

これは文字エンコードにまつわる問題でして,Android Studioのエディタは標準で「UTF-8」に設定されていますが,コンパイルに用いるJDKは何も指定しないとプラットフォームのデフォルトエンコードが設定されます。つまり「UTF-8のソースコードを,Windows-31Jと思ってコンパイルにかける」ため,ソースコードに日本語が含まれるとエラーになるわけです。

解決方法は大きく2通りあります。

  • ソースコードをUTF-8ではなく,プラットフォームのデフォルトエンコードに合わせる
  • ビルドスクリプトなどにソースコードのエンコードを明示する

前者はちょっと身もフタもない解決策ですが「開発環境がWindowsのみ」など制約条件が成り立つなら,それほど悪い策とは思っていません。ただ,Android開発のセオリーとしてUTF-8以外のソースコードを用いるのが良いのかどうかはわかりませんが……。

後者の場合,その情報をどこに指定するかで,何通りか選択肢がありますが,筆者はリスト5のようにビルドスクリプトにエンコードを明示する方法を好みます。

リスト5 <PROJECT_HOME>/MyFirstApp/build.gradleの一部

tasks.withType(Compile) {
  options.encoding = 'UTF-8'
}

build.gradleに指定する以外にも<HOME>/.gradle/gradle.propertiesや環境変数JAVA_OPTSfile.encodingを指定する方法があります。こちらの設定は「ソースコードのエンコード」ではなく「デフォルトエンコード」を暗黙的に変更することになります。筆者としては「ソースコードのエンコードはビルドの情報の一部で,ビルドスクリプトに明示するのが正しい」と思っているので,こちらのやり方は好みません。

 Android Studioのプロジェクトに対するエンコード設定は「Preferences / File Encoding」で行いますが,build.gradleとは連動していないようです。ここの設定は,Android Studioのエディタに対してのみ有効な設定と思った方がよさそうです。

著者プロフィール

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

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

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

Twitter: @masanobuimai