Android Studio による環境構築手順と各種Tips



1. [動作環境の確認](#1-動作環境の確認)
2. [Android Studio のインストール](#2-android-studio-のインストール)
3. [サンプルプロジェクト作成](#3-サンプルプロジェクト作成)
4. [Android Emulator追加](#4-android-emulator追加)
5. [サンプルプロジェクト実行](#5-サンプルプロジェクト実行)
6. [GitHubからソース取得してプロジェクト作成](#6-githubからソース取得してプロジェクト作成)
7. [プロジェクトのビルド](#7-プロジェクトのビルド)
8. [Git操作方法](#8-git操作方法)
9. [プロジェクト環境設定](#9-プロジェクト環境設定)
10. [各種Tips](#10-各種tips)


# 1. 動作環境の確認

| カテゴリ | 詳細 | 
|:-----------|:------------|
| OS       | macOS (64-bit)        |
| ディスク容量     | 2.8 GB      |
| 3rd Party Tools       | bash, mkdir, rm, git, curl, unzip, which  |
| Android       | Android7.0以上のSDKで実行  |
| Android Studio| 4.0 |
| エミュレータで利用するデバイス|Pixel 3a|
| System image|API level30,29|


# 2. Android Studio のインストール

## ダウンロード
Android Studioにアクセスし，Android Studioをダウンロード。
https://developer.android.com/studio/

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199265/78145533-0cee-f28b-cebe-181c97c1c35f.png" width=60%>

利用規約のダイアログが表示されるので、同意のチェックを入れて、ダウンロード。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199265/61ada7d1-f49b-e141-2876-73f408f2d7ef.png" width=80%>

android-studio-ide-193.6514223-mac.dmg
をダウンロード。ダブルクリックでインストールが開始される。(2020/07/29現在)

## Android Studioをインストール
「Android Studio」アプリをドラッグしてApplicationsフォルダにドロップする。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199265/9fa38e8e-2a43-530f-43ce-0563a195c666.png" width=40%>

インストールした「Android Studio」を開く。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199265/d005cf17-2b65-db85-8590-3f6b81ecf060.png" width=70%>

## 初期画面
初回の設定画面が表示されるので「Next」押下。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199265/bc21593d-2895-0c71-d365-ec9dd6d4edc4.png" width=60%>

## インストールタイプの選択
まずは「Standard」を選択して「Next」押下。<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199265/6b7374d6-1168-75f0-bc28-aa3f7ff8128f.png" width=70%>

## UIテーマの選択
Lightのまま「Next」押下。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199265/6848a9d7-0a60-550d-42d8-a5744a85bd0f.png" width=70%>

## 設定内容確認
設定内容確認して「Finish」ボタン押下。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199265/77c5fe8a-603f-ddcb-1005-aac2c97b9e5e.png" width=70%>

「Finish」押下してインストール完了。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199265/46cc2125-4474-a776-f38f-9790f0acba69.png" width=70%>

# 3. サンプルプロジェクト作成

## プロジェクトの新規作成
「Start a new Android Studio project」を選択
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199265/f7a291ce-4eae-ba17-c8c5-81c6b3259b4a.png" width=50%>

「Add No Activity」のプロジェクトを選択
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199265/313ae84e-330c-f054-527a-8d2875c722fc.png" width=70%>

## プロジェクトの設定
Name：「TestApp01」　任意のプロジェクト名入力
Package name：「com.example.testapp01」　自動補完される
Language：Kotlin 指定、初期状態のまま
Minimum API level：「Android 7.0」プルダウンで選択し直す

「Finish」ボタン押下でプロジェクト作成完了。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199265/7c773919-97bb-f70c-6538-a3dde9cdad3e.png" width=70%>

統合環境のエディタ表示となる。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199265/27273667-6a51-e563-980f-e30ecfca317f.png" width=80%>

しばらく待つと、「Tools」メニューで「AVD Manager」が選択可能状態になる。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199265/a1a984e8-429c-e7e8-5a0e-b8cd1f9fcfe5.png" width=80%>

# 4. Android Emulator追加
「Tools」メニューで「AVD Manager」が選択可能状態になると、エミュレータを追加可能となる。

[Tools]->[AVD Manager]で仮想デバイス選択画面が表示される。
「+Create Virtual Device...」 を押下。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199265/8133c7fb-9938-0652-192f-69415fcd802e.png" width=50%>

ここでは「Pixel 3a」を選択
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199265/e470002d-73d0-4f4a-4301-54f046d4a66d.png" width=70%>

「API 30」「API 29」２つを選択→「Download」を実行。
(2020/08/28　注記)
「API 30」のみでは障害発生してエミュレータが起動しないことがあるから。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199265/5ba16fc8-f93e-91c6-17ea-a51fd48476a6.png" width=70%>

Androidのライセンスに同意する
License Agreement で「Accept」選んで「Next」押下。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199265/e7b8183d-b75c-236a-2036-0fddc18ef0d3.png" width=70%>

インストール開始
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199265/a4e2ad60-34eb-8897-82bf-6d19ffa95cf6.png" width=70%>

ダウンロードが完了したら「Finish」を押下して終了。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199265/51092cb6-af22-3f24-a908-b3d5a853fa33.png" width=70%>

「Next」を押下
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199265/60b74f02-2d68-2b0c-bd5c-7ca9ed1d37f0.png" width=70%>

「Finish」を押下
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199265/3dae3beb-5ded-842e-9967-b199ab188143.png" width=70%>

Emulator一覧に作成したEmulatorが表示される。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199265/e03c6481-4d22-ac4e-48b4-6ca2bb2d179e.png" width=70%>

# 5. サンプルプロジェクト実行
Emulatorを選択し，右のプレイボタンをクリックしEmulatorを実行する。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199265/fd19af89-e0d3-0df6-90ae-c073ae7a0b0b.png" width=80%>

Emulatorが起動する。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199265/a66dc559-5716-f99b-b200-95ba3585b957.png" width=20%>


# 6. GitHubからソース取得してプロジェクト作成

Android Studioを開いて、「Get from Version Control」を押下
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199265/de737878-7159-d064-3d0b-92932b9bfddd.png" width=70%>

URL：取得先のGitのURLを指定
Directory:ダウンロード先のディレクトリ(ない場合は作成されます)
を指定して、「Clone」を押下
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199265/9f8496b6-19d4-e367-2f1b-fa5c163f946a.png" width=80%>
初回接続時にはgit接続アカウントの「Username」「Password」をダイアログで聞かれるので、入力する。

クローン作業が終了すると、確認ダイアログが表示される。
「Yes」を押下すると、Android Studio の画面が表示される。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199265/a3d0b549-3b18-569d-e714-0234077786e4.png" width=50%>

各種ファイルのindexingなどの処理が行われているので、しばらく待ちます。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199265/914c9fe8-159d-ebb3-723c-ed5e49fefd53.png" width=70%>

フッタ部分で「indexing」中なら以下のようなステータスが表示されます。この表示がなくなれば処理終了です。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199265/88e2c1b4-bf93-284f-df61-c41a5407ff65.png" width=70%>


# 7. プロジェクトのビルド
## 7-1. ビルドでエミュレータ起動

エミュレータ端末機種表示の右横の▶ボタン押下でビルド実行されます。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199265/66c55656-bbd3-fc0b-9428-3026df4bdce6.png" width=90%>

スナップショット取得するかの確認ダイアログが表示されても「No」を押下。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199265/0a2a3f4d-3f6e-5e67-69fd-d4b8c0bf3912.png" width=50%>

エミュレータ起動準備中の表示
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199265/92f477ab-dbb3-9ff2-5af3-57a6aa387161.png" width=20%>

## 7-2. エミュレータがうまく起動しない場合
Android エミュレーターがフリーズしたり、起動しなくなったらエミュレーターを初期化します。そのためには、エミュレーターの利用しているディスクをクリアします。

AVD Manager を開きます。ツールバーから起動するなら以下の図参照。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199265/5f48c2a9-74fb-563a-07aa-b9ffee7ccfaf.png" width=70%>

メニューからなら「Tools」＞「AVD Manager」を選択。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199265/e8c24406-f3be-0dd9-c8e7-1258bdb8a7ac.png" width=60%>

一覧から初期化したいエミュレーターを見つけ、右端の▼アイコンをクリックしてメニューを開きます。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199265/5824fbf5-f4a1-5ac8-7089-947d7d8899d7.png" width=90%>
メニューの中の 「Wipe Data」を選択します。これでエミュレーター内のデータをすべて削除できます。
確認のダイアログが出るので “Yes” を押したら実行されます。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199265/ed6e1aa9-6b5b-a192-69cb-4cf4fb324723.png" width=50%>

# 8. Git操作方法

## 8-1. リモートリポジトリからpull

メニュー ： 「VCS」 > 「Git」 > 「Pull...」 を押下
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199265/c06c0769-c150-e318-7970-f25fb6c334f9.png" width=70%>

master から取得する場合は、「origin/master」を選択した状態で、「Pull」を押下します。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199265/e1cc78b9-2cc8-843c-a8e7-5ccf57438cb4.png" width=70%>


## 8-2. リモートリポジトリにpush

適当にソースコードを修正した後、ローカルリポジトリに反映(=commit) します。
メニュー ： 「VCS」 > 「Commit...」 を押下
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199265/acb5517a-f666-3b75-bb7a-69fbd493bc97.png" width=70%>

さらに、ローカルリポジトリの内容をリモートリポジトリに反映(=push)します。
メニュー ： 「VCS」 > 「Git」 > 「Push...」 を押下
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199265/d3db77ea-983f-a4d0-f5ba-d2f950080c41.png" width=70%>


<準備中>




## 8-3. ブランチ作成
<準備中>

<!--
Branchesを右クリックする。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199265/e23272eb-2a13-2256-8236-c25a928ea9aa.png" width=50%>
-->
## 8-4. ブランチ切り替え
<準備中>

# 9. プロジェクト環境設定

## 9-1. Gradleとは
Gradle (ぐれいどる) は作成したプログラムをビルド(コンパイル／テスト／実行／パッケージング／配布)するために利用するツール。

- 有名なビルドツールに Maven がありますが、Gradle は Maven のように XML で設定定義するのではなく Java 言語によく似た構文である Groovy 言語を利用。
- プログラマブルにビルド定義ができプログラマと親和性が高い。
- Android 開発では標準のビルドツール
- Gradle 自身も Java と Groovy で作成され Gradle によりビルドされている
- OSS として公開( https://github.com/gradle/gradle )されている
- JVM(Java 仮想マシン)上で動作するため、基本的にどのような環境でも動作させることが可能。

## 9-2. Gradleの設定ファイル：build.gradle

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199265/69ee71be-33d7-ddbd-ad9a-fdce843bd6fe.png" width=90%>

### minSdkVersion

アプリを実行することができる最小のAPIレベルの指定。
端末のSdkVersionがこれより低い場合、アプリはインストールできない。

Google Play の対象 API レベルの要件を満たす
https://developer.android.com/distribute/best-practices/develop/target-sdk?hl=ja

### targetSdkVersin

アプリがターゲットとするAPIレベルの指定。設定なしなら、minSdkVersionと同じに。
AndroidがAPIレベルごとに動作や外観を変更される可能性があるため設定される。

- 「AndroidのAPIレベル」＞targetSdkVersionの場合
　開発者が想定した動作・外観でアプリが動く。

- 「AndroidのAPIレベル」＜targetSdkVersionの場合
　AndroidのAPIレベルでの動作・外観が優先される。

既存アプリのアップデートは2018年10月からtargetSdkVersionを26以上にする必要がある
https://android-developers.googleblog.com/2017/12/improving-app-security-and-performance.html

### verionCode

内部バージョン番号。
型： 整数であること　例：100
目的：ユーザへ表示されない。内部で保持し、バージョンを比較してどちらが新しいかを判定するため。番号が大きいほど、バージョンが新しいことを示します。

### versionName
ユーザに表示されるバージョン番号。
型：文字列　例：3.2.0
目的：ユーザへの表示

### versionName → versionCode 変換ルール
メジャーバージョンは ×10,000, マイナーバージョンは ×100, リビジョンは ×1
で加算するとよい。
例 android:versionName="2.14.5"　の場合、android:versionCode="21405"


# 10. 各種Tips

## 10-1. ファイル名やクラス名の検索
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199265/c0cfefa6-3777-a077-21c5-79b4e1fb8461.png" width=80%>

メニューから ： 「Edit」＞「Find」＞「Find…」 で文字列検索
もしくはツールバーの虫眼鏡アイコンを押下
呼び出しショートカット：　Shift を二回押下
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199265/d2b42892-8fc3-65ea-f70c-30751365c5ea.png" width=60%>

入力文字でヒットするクラスやフィールドが一覧される。クリックすると該当箇所にジャンプする。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199265/adfd2df3-861a-595e-1694-b46a20b0a6db.png" width=90%>

## 10-2. 呼出し元の検索
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199265/be395e1e-d013-cb55-fe83-7fee0d6ca5de.png" width=90%>
1. マウスカーソルを当てて右クリック
2.メニュー ： 「Go To」 > 「Declaration or Usages …」 を押下

または、 カーソルをあわせて、 ⌘+B を押下
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199265/aa46556d-7fce-ad3e-1329-5a7677b154d9.png" width=90%>

ポップアップウィンドウが表示される。該当箇所をクリックすると宣言 or 使用箇所にジャンプする。

## 10-3. 呼出し元一覧を表示する

呼び出しショートカット ： Control + Option + H
処理の流れを追いかけるのに、呼出し元一覧を表示すると活用できます。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199265/24144104-c613-0b25-21c5-80d5b6b564b0.gif" width=80%>

メニューから ： 文字選択して 「Navigate」＞「Call Hierarchy」 を選択でも可能。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199265/3c88bf2c-0952-b1c2-9649-0c74e5db2833.png" width=50%>

## 10-4. 最近使ったファイルを表示する

呼び出しショートカット ： Command + e
素早く最近使ったファイル一覧が出てきます。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199265/892335c3-02f1-76f7-4bb7-557555b2dba7.png" width=80%>

## 10-5. カーソル位置の履歴
カーソル履歴の戻る、進むが可能です。

呼び出しショートカット
履歴戻る : command + [
履歴進む : command + ]

## 10-6. フォーマットして次の行を開く

呼び出しショートカット ： Command + Shift + Enter

## 10-7. 一行ずつコメントアウト

呼び出しショートカット ： Command + /
コメントアウトされている行(//)で実行すると、コメントアウト解除されます。

## 10-8. まとめてコメントアウト

呼び出しショートカット ： Command + Option + /
複数行を選択した状態で、呼び出しショートカット を実行すると、
(/**/)で一括コメントアウトされます。
一括コメントアウトされた行で実行すると、コメントアウトが解除されます。

## 10-9. リネーム

変数、クラス名、ファイル名、メソッド名などをリネームします。
呼び出しメニュー ： Refactor ＞ Rename
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199265/077dfe8e-04e1-f7ee-fc46-ab9e94f353ea.gif" width=80%>