Android StudioはAndroidアプリの統合開発環境(IDE: Integrated Development Equipment)ツールです。
結局どんなアプリケーションでもプログラム、つまりテキストファイルなので、テキストファイルの作成ができる普通のテキストエディタ、たとえなatomであったりサクラエディタ、notepad++などでも開発はできますし、さらにはwindows標準のメモ帳でも開発はできます。
しかしそこにプログラムを書いて.pyなど拡張子をpythonファイルにしたとしても、メモ帳ではエラー検知やエラーを表示してくれる機能などはありません。
なので開発者が開発しやすいように、そういった開発中のエラー(シンタックスエラーやライブラリ読み込みなど)などをしっかり教えてくれたりする開発環境がIDEと呼ばれる統合開発環境になります。
そんなAndroidアプリの統合開発環境であるAndroid Studioを僕も色々触ってみて感じたことについて、ここで感じたことを記載していこうと思います!
Contents
Android Studioのインストール
まだAndroid Studioをインストールしていない方は以下にアクセスしてダウンロードしてください。
https://developer.android.com/studio
スクロールすると、以下のようなWindows用とMac用のAndroid Studioがあるので、そこからダウンロードします。
Android Studioのプロジェクト作成
Android Studioのプロジェクト構成
manifest
manifest:すべてのアプリ プロジェクトでは、プロジェクト ソースセットのルートに AndroidManifest.xml ファイルを(このままの名前で)配置する必要があります。 マニフェスト ファイルは、アプリに関する重要な情報を Android ビルドツール、Android オペレーティング システム、Google Play に対して説明するものです。
javaフォルダ
javaフォルダには、アプリ内の画面の処理を定義するプログラムを記載するところになります。
app > java > アプリケーションID(本プロジェクトのアプリのパッケージ名) > MainActivity.javaで
パッケージとは
パッケージとは、プログラムを複数にまとめたもので、Android Studio内では、プログラムの集まりとなると、
- \(①\):アプリ全体のプログラム
- \(②\):外部の人が作ったプログラム
などいろいろあります。
\(①\)だと、Androidアプリのプロジェクトを立てると、com.exampleがプレフィックスのパッケージ名が付与されます。
\(②\)の例でいくと、
import android.app.Activity; //Android SDK内のandroid.appパッケージのActivityクラス
import android.os.Bundle; //Android SDK内のandroid.osパッケージのBundleクラス
import android.view.Menu; //Android SDK内のandroid.viewパッケージのMenuクラス
import android.view.MenuItem; //Android SDK内のandroid.viewパッケージのMenuItemクラス
import android.widget.Button; //Android SDK内のandroid.widget パッケージのButtonクラス
など、さまざまなパッケージ名があります。
外部のパッケージ(ライブラリ)を読み込みたい場合は、importで宣言して、
現在記載しているActivityファイルをパッケージに取り込みたい場合は、packageで宣言することによって、取り込みができます。
resフォルダ
resフォルダはアプリの表示画面を構成するものになります。
特に重要なのは、res > layout > activity_main.xmlとありますが、
このxmlファイルは上記のJavaで説明したMainActivity.javaに紐づいています。
MainActivity.javaとactivity_main.xmlと紐づいていて、
MainActivity.javaは画面内の処理(ボタンをタップした時の処理など)を記載し、activity_main.xmlはその画面を構成するものになります。
なので、ボタンなどを画面に追加したいとなる場合、activity_main.xmlに記載することになります。
Android Studioでは、xmlファイルの画面構成を考えるファイル、Activityファイルと呼ばれるその画面に対しての処理を定義するファイル(Java)で処理と画面を開発していきます。
XcodeでもSwiftのstoryboardで開発する場合、storyboard上でGUIで作成したアプリの画面と、SwiftのViewControllerファイルを紐づけるような処理をして、画面と処理の1対1を作ったりします。
※ さらにXcodeでSwiftUIを使用する場合は直でViewプロトコルを継承したswiftファイルで構築すればそれが処理と画面を一役でかっている。
Gradle Scripts
GradleScriptsはGradleファイルを定義するところになります。
Gradleは取り込みたいパッケージ(ライブラリ)を定義することで、このアプリに読み込まれるようになります。
そしてこのアプリ全体に対してライブラリを読み込みたいのか、それとも一部のサブプロジェクトに対してライブラリを読み込みたいのかを指定することができます。
デフォルトではMainActivityが作成されており、そしてそれに対してres > layoutに、
処理のActivityファイルを作成すると自動的にxmlファイルも作成してくれます。
Activityファイルでのファイル名の付け方として、MainActivityというように、●●Activityという名前で作成する必要があります。そうすることで、xmlファイルもactivity_●●.xmlで作成されます。
以下のように、layoutに画面を作成しないこともできます。
ただ基本的にはxmlファイル1つに対して1つのActivityファイルは対応するような形にします。
右クリックをすると、以下のようなモーダルが出るので、Activityファイルを作成します。
以下のようにActivityファイルを作成しようとすると、layout(xmlファイル)も同時に作成するとあるので、作成します。
Activityファイルと、xmlファイルは1対1
activityファイルはjavaでViewの挙動を定義するもの。
xmlファイルはそのactivityファイルに紐づけられた画面表示ファイルで、xmlファイルに記載をすることで画面を表示します。
基本的にはActivity名とxmlファイル名は一緒にする必要があります。
切り替え
上記のようにProjectにすると、appフォルダが出てきます。
Appフォルダ
これは
AndroidProject/
∟ build.gradle (このアプリ全体に適用するビルドスクリプト)
∟ settings.gradle (ビルドすべきサブプロジェクトの一覧)
∟ app/ (App サブプロジェクト)
∟ build.gradle (appサブプロジェクトに適用するビルドスクリプト)
∟ build/(ビルド後の成果物)
∟ src/
∟ main/ (main ソースセット)
∟ AndroidManifest.xml
∟ java/
∟ MainActivity.java (処理を構成する、上で説明済み)
∟ res/
∟ layout
∟ activity_main.xml (画面を構成する、上で説明済み)
∟ app1/ (app1 サブプロジェクト)
∟ build.gradle (app1サブプロジェクトのビルドスクリプト)
∟ app2/ (app2 サブプロジェクト)
∟ build.gradle (app2サブプロジェクトのビルドスクリプト)
Android Studioへのライブラリの取り込み方法
gradle
AVDの作成
Xcodeではビルドする際にデバイスの選択をしてビルドすることが簡単にできますが、
Android StudioではAndroid Studio内で仮想的にデバイスを表示してそこでビルドするという、AVD(Android Virtual Device)と呼ばれる、仮想デバイスという機能があります。
この仮想デバイスを作成することによって、ビルドを行います。
仮想デバイスには
- Androidデバイスの種類
- Android OSへアクセスするためのAPI(プログラムから通常はOSヘ直接操作することはできません。プログラムは人間が読めるコードで、それを機械語に変換して、そして0,1にします。なので直接操作はできないのですが、APIというシステムコールを
用いることでOSへ操作できる。なので基本的には)
を選択することで作成することができます。
AVDでビルドを行う
AVDを起動(エミュレータを起動)することと、
アプリを起動することは別です。
DeviceのActionの再生ボタンでデバイスが立ち上がります。
しかしこれではデバイスが立ち上がっただけで、アプリは起動してません。
なので、以下の赤枠をクリックすることでアプリが実行されます。
AVDの再起動は以下のところでできます。
Duplicate
Wipe Data: 該当デバイスに残っているキャッシュデータを削除する
Cold Boot Now: 該当デバイスを再起動する
Show On Disk: 該当のデバイスのFinder上にアクセスする
Delete: デバイス削除
エミュレータが動いている場合は、上記のDeleteなどができません。
なので、一度このエミュレータを止める必要があります。
止め方としては、以下のShow On Diskをクリックします。
そうすると、
AVDのプログラムがFinder上に表示されるので、以下の.lockファイルのみを削除します。
※ Size On Diskを見ると、このAVDでは4.1GBものデータ量を食っている状況です。なので複数AVDを作ってエミュレータを立てたりすると、Android Studio自体が処理できなくなる可能性もあるので、無駄にAVDを作ってもエミュレータは1つにするなどはした方がいいです。
そうすることでエミュレータが止まり、デバイスの削除やキャッシュデータの削除、デバイスの再起動などができます。
ただエミュレータが動いている場合、再起動やキャッシュデータ削除、などをすることができません。
なのでエミュレータを一旦止めたい場合は、
.lockと拡張子がついているファイルを削除する必要があります。全てです。
右端にDevice ManagerとEmulatorがある
Device Managerでエミュレータ一覧が見れて、deleteなどもできる
cold boot nowは再起動らしい
でもemulatorが実行しているときやると、
cannot delete a running avd
でエラーになってできない。こういう場合は、
再起動したいエミュレータのshow on diskをクリックして、.lockファイル/フォルダを削除する
そうすることで再起動やエミュレータ削除、キャッシュ削除などできる。
deviceマネージャーのshow on diskにあるGBやMBはエミュレータの容量。食ってるので、複数やらない方がいい
エミュレータを起動して開発アプリを実行しているときに、プログラムなど修正して、
アプリを再実行したい場合、以下の赤枠(停止して再実行)のボタンをクリックすることで可能。