Android Studio使い方メモ¶
プロジェクト¶
Android Studioは、Graidleにおんぶにだっこしているので、プロジェクト設定はGradleの理解が必要です。
- マルチプロジェクト構成がデフォルト
- ライブラリプロジェクトを単独で作るウィザードがない
- Gradleの定義があればAndroid Studioプロジェクトを生成できる
マルチモジュール構成での設定¶
Android StudioはGradleのマルチモジュール形式でプロジェクトを作成します。このとき、compileSdkVersion、buildToolsVersionなどは各モジュールのbuild.gradleに記述されます。通常、同一プロジェクト内では同一のcompileSdkVersionなどを使うので、設定を変更するときはいちいち各モジュールのbuild.gradleを修正する必要があり、きわめて冗長です。
そこで、プロジェクトトップのbuild.gradleに使用するバージョンの値を変数に定義し、各モジュールのbuild.gradleではプロジェクトトップで定義したバージョンの値の変数を参照するようにします。
- プロジェクトトップのbuld.gradle
buildscript { ... } allprojects { ... } ext { compileSdkVersion = 21 buildToolsVersion = "22.0.1" }
- 各モジュールのbuild.gradle
android { compileSdkVersion rootProject.ext.compileSdkVersion buildToolsVersion rootProject.ext.buildToolsVersion : }
minSdkVersionやtargetSdkVersionも同様に定義してもいいかもしれません。
Gradleのターゲット¶
Android Studioで作成したプロジェクトでは、Gradleのタスクが多数定義されています。
主要なものを列挙します。
- assembleDebug デバッグ版でビルドしAPKファイルまたはAARファイルを作成
- installDebug デバッグ版のAPKをデバイスにインストール
APKへの署名¶
デバッグビルドでは、APKファイルに自動で署名がなされます。
リリースビルドに変更すると、自動では署名がなされないので[Run]がエラーとなります。
Error: The apk for your currently selected variant(app-release) is not signed.
リリースビルドで署名の設定¶
キーストアファイルおよび証明書(自己)の作成
- [Build]メニュー > [Generate Signed Bundle/APK] で「Generate Signed Bundle or API」ダイアログを開く
- [APK]ラジオボタンを選択し[Next]ボタンをクリック
- [Create new]ボタンをクリックし、「New Key Store」ダイアログを開く
- Key store path:欄に、新規作成するキーストアファイルのパスを指定
- Password欄にパスワード指定
- Alias欄にキー名(デフォルトのkey0のままでもよい)
- Password欄(キーストアのパスワードとは別に鍵毎に)パスワードを指定
- Certificate領域は最低限1項目に記述
モジュールの設定で署名の指定
- [File]メニュー > [Project Structure]で「Project Structure」画面を開き、左側ペインで[Modules]を選択、右側ペインで[Signing Configs]を選択
- [+]アイコンをクリックし、[release]を作成
- Source File欄に、上述で作成したキーストアファイルを指定
- Store Password欄に、上述で作成したキーストアファイルのパスワードを指定
- Key Alias欄に、上述で作成したキー名を指定
- Key Password欄に、上述で作成したキーのパスワードを指定
Android Studioから[Run]でリリースビルドを実行するには、build.gradleに追記が必要です。
- build.gradle
android { : buildTypes { release { signingConfig signingConfigs.release } } : }
注意事項
モジュールのbuild.gradleに、署名の指定内容(キーストアの場所とパスワード)が直書きされます。リポジトリで共有する際はこれらの設定値をプロパティや環境変数から引用するように書き換えが必要です。
バージョン管理(VCS)¶
バージョン管理ツール CVS、Git、Mercurial、Subversion と連携する機能があります。
バージョン管理ツールで展開したディレクトリのプロジェクトを開いてもデフォルトではバージョン管理ツールとは連携しないので、手動で設定します。
Git連携¶
Gitと連携させる¶
Gitリポジトリからプロジェクト(Android StudioプロジェクトまたはGradleプロジェクト)をチェックアウトして開いた後、[VCS]メニュー > [Enable Version Control Integration...] を選択します。"Select a version control system to associate with the project root"でGitを選択します。
改行コードの設定¶
Windows版Android Stuidoはデフォルトで改行コードをCRLFで扱います。改行をCRLFとしているファイルをGitでコミットしようとすると、「Line Separators Warning」警告ダイアログが表示されます。これは、Android Studioから呼び出しているGitの設定でcore.autocrlf=falseのときに表示されます。
Gitリポジトリがファイルの改行コードCRLFを許容する運用であれば、[Commit As Is]ボタンをクリックします。
Gitリポジトリがファイルの改行コードCRLFを許容しない(LFに統一)運用であれば、[Fix and Commit]ボタンをクリックします。ただし、この場合Android Studioが呼び出しているGitの設定を変更してしまうので要注意です。
Gitの改行コードに対する取り扱いについて補足します。Gitは、テキストファイルの改行コードを取り扱うモードを3つ持っています。
- テキストファイルの改行コードをそのままリポジトリに格納・取り出すモード(autocrlf=false)
- テキストファイルの改行コードをリポジトリ内ではLFに統一、格納時に改行コードをLFに揃え、取り出し時にCRLFに変換するモード(autocrlf=true)
- テキストファイルの改行コードをリポジトリ内ではLFに統一、格納時に改行コードをLFに揃え、取り出し時はOSの改行コードに合わせて変換するモード(autocrlf=input)
- 注)取り出し時は、Linux、Mac OS XならLFのまま、WindowsではCRLFに変換される
改行コードがCRLFのファイルをコミットするとき、autocrlf=falseのときはリポジトリ内に改行コードCRLFが入ってしまいます。Gitはリポジトリ内の改行コードをLFに揃えることが多いので、注意喚起のために警告ダイアログが表示されるのだと思います。
Git連携メモ¶
- ブランチ名は、右下、文字コードの横に表示されます
Viewまわり¶
Activity¶
ActivityサブタイプのJavaコードを手作業で追加する¶
Android Studioのウィザードで作成した場合は、Activityの定義が設定に自動で追加されますが、Activityを継承したクラスのJavaソースファイルを追加するときは設定ファイルに定義を合わせて追加する必要があります。
<application ...>
<activity android:name=".FragmentEx"
android:label="@string/app_name">
</activity>
<activity android:name=".DetailActivity"
android:label="@string/app_name">
</activity>
</application>
ファイル¶
ファイルのエンコード¶
UTF-8に揃えるのが最善です。
Android StudioではJavaソースファイル以外にもXMLファイル、Gradleの定義ファイル(Groovy)があります。XMLファイルとGradleの定義ファイルはデフォルト(エンコードを明示的に指定しない場合)はUTF-8として扱われます。Android Studioの生成するXMLファイル、Gradle定義ファイルには、エンコードが明示的には記述されないので、UTF-8で記述しないとかなり面倒です。
Androidアプリケーション開発は、Windows OS上だけでなく、LinuxやMacOSでも可能です。LinuxやMacOSの日本語環境はファイルのエンコードがほぼUTF-8です。
Windows版のAndroid Studioは、デフォルトではJavaソースコードのエンコーディングはwindows-31j、XMLファイルのエンコーディングがUTF-8となっています。そのため、リソース(strings.xmlなど)に記述した日本語はAndroid上で正しく表示されますが、Javaソースコード中にハードコーディングした文字列はJavaソースコードのエンコーディングがwindows-31jだとなぜか化けてしまいます。JavaのクラスファイルではUTF-8になっているはずなのですが。
Android Studioのエンコード定義¶
Android Studioの使用するエンコーディングの定義は、[File]メニュー > [Settings] > [Editor] > [File Encoding]で、IDE Encoding欄で指定します。
UTF-8にしておくのがよいかと思われます。
プロジェクト個別のエンコーディング¶
プロジェクトの使用するエンコーディングの定義は、[File]メニュー > [Settings] > [Editor] > [File Encoding]で、Project Encoding欄で指定します。ここもUTF-8がよいかと思われます。
ファイルのエンコーディングを変更¶
上述のエンコーディング設定を変更しても、すでに存在するファイルのエンコーディングは変わりません。そこで、各ファイルのエンコーディングを変更するには、それぞれのファイルを開いて、Android Studio画面の右下にあるエンコーディング表記欄をクリックし、ポップアップメニューからエンコーディングを指定します。
Windows版Androidでは、デフォルトではwindows-31jになっているので、ここをクリックします。
ここでUTF-8を選択します。すると、変更するかどうか聞かれるので、[Convert]ボタンをクリックします。
すると、ファイルエンコーディングが変更されます。
ファイルの改行コード¶
Android Studioのファイル改行コード定義¶
Android Studioの使用するエンコーディングの定義は、[File]メニュー > [Other Settings] > [Default Settings] > [Editor] > [Code Style]で、Line separator (for new files) 欄で指定します。
Unix and OS X (\n) にしておくのがよいかと思われます。
Java編集機能(エディタ)¶
メソッドの記述¶
オーバーライドメソッドの記述¶
コード補完を使うと簡単にメソッドの雛形が生成されます。
[Alt]+[/]と打つと(Emacsキーバインドの場合)、そこで記述可能なもの候補がポップされます。
候補が多すぎるので、気にせずにオーバーライドするメソッド名の一部を打ち続けます。打つとポップアップリストの候補が変わって(絞り込まれて)いきます。ある程度するとポップアップにオーバーライドしたいメソッドが出てくるのでそれを選択します。
すると、コードが生成されます。
Javadoc¶
クラスやメソッドにマウスを乗せるとJavadocを表示する¶
次の設定を行います。
- [File]メニュー > [Settings] で「Settings」画面を開き、左側ペイン[Editor] > [General]を選択し、右側ペインのOtherカテゴリにある[Show quick doc on mouse move]にチェックを付ける
または、カーソルを置いてCtrl-Qでも表示できます。Ctrl-QでJavadocを表示した状態で再度Ctrl-Qを押すとJavadoc表示画面が大きくなります。