はじめに
Android Studioのあれこれについて書いていきます。
環境
- macOS Catalina 10.15.3
- Android Studio 3.6.3
プロジェクトファイル構成
プロジェクトを新規作成すると以下のような構成でファイルが生成される。
- app
モジュールフォルダ(アプリモジュールのファイルが格納されている) - .gitignore
Android Studio が自動生成する gitignore - .idea
Android Studioのプロジェクトの設定関連フォルダ。(これにより Android Studio のプロジェクトと認識されるらしい)
その他は Gradle 関連のファイル。(Gradle は JVM 上で動く Groovy で記述されたビルドシステム)
- build
ビルド生成物の格納フォルダ - .gradle
Gradleの実行環境が保存されているフォルダ - gradle
gradle-wrapperが格納されてるフォルダ(これによりgradleをインストールしてなくてもgradlew
コマンドで実行できる) - gradlew
実行ファイル(Mac用) - gradlew.bat
実行ファイル(Windows用) - build.gradle
ビルド内容の定義ファイル - gradle.properties
build.gradleで使えるプロパティ定義 - local.properties
ローカル用のbuild.gradleで使えるプロパティ定義(.gitignoreで除外されてる) - settings.gradle
Settingsオブジェクトに対するなにかの定義ファイル? - [プロジェクト名].iml
プロジェクトの定義情報を保存している
参考
gitignore
生成される gitignore
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
*.iml .gradle /local.properties /.idea/caches /.idea/libraries /.idea/modules.xml /.idea/workspace.xml /.idea/navEditor.xml /.idea/assetWizardSettings.xml .DS_Store /build /captures .externalNativeBuild .cxx |
モジュール
プロジェクトには複数のモジュールを含めることができる。モジュールのファイル構成は下記。
ルートディレクトリ:[モジュール名(デフォはapp)]/
- build/
ビルドの出力結果が格納されている。 - libs/
プライベートライブラリが格納されている。(.jarファイルとか) - src/
モジュールのすべてのコードとリソースファイル格納されている。 - build.gradle
モジュール固有のビルド構成を定義する。 - .gitignore
- app.iml
モジュールごとの定義情報を保存している - proguard-rules.pro
src
- androidTest/
Android デバイス上で実行するインストゥルメンテーションテストのコードが格納されている。 - test/
ホスト JVM 上で実行するローカルテストのコードが格納されている。 - main/
すべてのビルドバリアンで共有される Android コードとリソースが格納されている。- AndroidManifest.xml
アプリとその各コンポーネントの性質を記述する。 - java/
ソースコードが格納されている。 - res/
ドローアブルファイルやレイアウトファイルなど、アプリのリソースが格納されている。 - assets/
画像ファイルやCSVファイルなど
- AndroidManifest.xml
gitignore
生成される gitignore
1 |
/build |
プロジェクトビュー
Android Studioでみる場合、プロジェクトビューの選択により見た目が変わります。
基本的にはファイルの役割ごとにまとめて表示される「Android」を指定し、ファイルの追加時などは実際のフォルダ構成で表示される「Project」を選択することになるかと思います。
便利なショートカット
よく使いそうなショートカット集です。
参考:キーボード ショートカット
機能 | ショートカット |
---|---|
ファイルやクラスなどを全体から検索 | shift 2回 |
全体から検索 | cmd+shift+F |
一行削除 | cmd+Backspace |
アクティブなエディタタブを閉じる | cmd+W |
宣言に(直接)移動 | cmd+B |
行コメントでのコメント / コメント解除 | cmd+/ |
エラー解決 | option+Enter |
戻る(宣言に移動した時とか) | cmd+option+← |
進む(宣言に移動した時とか) | cmd+option+→ |
Layout Editor
Xcode の Interface Builder エディタのようなやつ。
これで操作しにくい場合は右上の3つの切り替えボタンでxml表示と切り替えれる。
端末の種類や向き、言語設定などを切り替えて確認することができる。
詳細は下記参考
Layout Editor を使用して UI を作成する
エミュレータ操作
AVD(Android Virtual Device)の追加する
最初は AVD が作成されていない状態なのでエミュレータで起動したい端末を AVD Manager で追加する。
AVD Manager は画像の赤枠から起動できる。
- AVD Manager を開く。
- [AVD Manager] ダイアログの下部にある [Create Virtual Device] をクリックする。
- [Select Hardware] でハードウェアプロファイルを選択して [Next] をクリックする。
- [System Image] で任意の API レベル用のシステムイメージを選択して [Next] をクリックする。
- [Verify Configuration] で必要に応じて AVD プロパティを変更し、[Finish] をクリックする。
エミュレータ起動
画像赤枠ので起動する AVD を選択し、画像青枠の実行をクリックするとエミュレータを起動できる。
詳細は下記参考
仮想デバイスの作成と管理
デバッグ
ブレークポイント
ブレークポイントを貼り(コードの左横をクリック)、デバッグ実行(画像の赤枠)する。
ブレークポイントの処理まで進むと Debug ウィンドウに下記のように表示される。(ウィンドウが表示されない場合は View -> Tool Windows から表示する)
右上の赤枠でステップ実行などの操作ができる。一番右の電卓をクリックすると下記のように指定した変数の確認などができる。
ログ出力
ログ出力には android.util.Log
を利用する。ログレベルには下記のように Debug や Error など設定でき使いやすい。
1 2 3 4 5 |
Log.e(TAG, error) Log.w(TAG, warn) Log.i(TAG, info) Log.d(TAG, debug) Log.v(TAG, verbose) |
tag
はとりあえずクラス名を設定しておけばいいと思う。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
class MainActivity : AppCompatActivity() { companion object { private val TAG = MainActivity::class.java.simpleName } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) hoge() } fun hoge() { val a = 2 val b = 3 val c = a + b Log.d(TAG, c.toString()) } } |
Logcat でログレベルのフィルタとタグでの検索を行うと下記の様に表示される。(ウィンドウが表示されない場合は View -> Tool Windows から表示する)
クラッシュ時
下記のように NullPointerException
になるように修正し実行する。
1 2 3 4 5 6 |
fun hoge() { val a = 2 val b: Int? = null val c = a + b!! Log.d(TAG, c.toString()) } |
Logcat に下記のように出力される。下の方にどの関数(MainActivity.hoge())でクラッシュしたか記載されている。
さいごに
これでざっくり Android Studio を操作できるようになったはず!
参考
- プロジェクトの概要
- 多分わかりやすいGradle入門
- Gradleには設定ファイルがいっぱい
- Gradle入門
- キーボード ショートカット
- Layout Editor を使用して UI を作成する
- 仮想デバイスの作成と管理
コメント