Android でも Android アプリを開発したい

## はじめに

どれだけの人が Android で Android アプリを開発したいと思っているのか分かりませんが、本記事は Android 上でセルフ開発を行うための環境構築を目的としています。
セルフ開発とは、自身の端末で自身の端末向けのアプリケーションを開発することを指します。
Windows や Mac、Linux などはセルフ開発が出来ますが、Android は少なくとも公式には開発ツールが出てませんでしたのでついやってみたくなり、思い立ったが吉日とばかりに構築してみました。
（とはいっても公式の Linux 版を使用しているのですけれどもね。。。）
まだ構築したばかりですので、もしかすると実際に開発を行うと不備があるかもしれませんが、その辺りはご容赦ください。
何か見つかれば調査して解決方法を書いていきたいと思います。
本記事では Android Studio を最低限の動作を行うところまでを構築します。
→[デバッガ](https://qiita.com/tacchi/items/51c3bff4cd8c4e2ad57f)を立ち上げるところまでを記載しました。

なお Android Studio を使うにあたってはスタイラスペンはあった方が良く、100円ショップのでも無いよりはマシです。
Android Studio のメニューが細いので親指はおろか小指でのタッチでもつらいです。
なお先端がプラスチックの Nintendo 3DS 向けのものは買わないで下さい。タッチパネルが反応しせんでした・・・

## 事前準備（Ubuntu のデスクトップ環境）

事前に UserLAnd や Termux 等で Ubuntu のデスクトップ環境を用意してください。
もし構築していない人は、後で最低限のデスクトップ環境の構築手順を記載しますので良かったら参考にして下さい。
おそらく Android Studio の動作速度は Termux の方が速いですが手順が面倒です。
速い端末をお持ちの人は UserLAnd で楽をするのも手かもしれません。

なお Debian はJDKのバージョンの問題で、Android Studio が動作しませんのでおすすめしませんが、openjdk 8 をなんとか用意できる人なら動かせるかもしれません。

## ダウンロード

Android Studio, SDK tools, Arm64版attp2 をダウンロードします。
ダウンロードは Windows での操作を前提に書いていますが、Android でも同じ事はできると思います。

### Android Studio, SDK tools のダウンロード

[Android Studio downloads](https://developer.android.com/studio/?hl=ja#downloads) に入って Android Studio package の Linux (64-bit)版と SDK tools package の Linux 版をダウンロードします。

私の時には、android-studio-ide-191.6010548-linux.tar.gz と sdk-tools-linux-4333796.zip がありました。

後で、このファイル名を指定してコマンドを実行している箇所がありますが、もしファイル名が変わっていましたら、ご自分のダウロードしたファイル名に置き換えてコマンドを実行して下さい。

[Android SDK Tools](https://developer.android.com/studio/releases/sdk-tools?hl=ja)は、開発とデバッグのためのツール一式を含むものになります。
Android Studio は単体ではなく、様々な外部ツールと連携して動作することになります。
後で Gradle と呼ばれるビルドツールで更に別のコマンドラインツール等をダウンロードします。

### Arm64版attp2 のダウンロード

aapt2 とは、APKファイル（Androidでインストールに使用するアプリケーションのパッケージファイル）を生成等をするためのツールになります。
公式には Arm64 CPU 版は出ていませんが、Githubで公開されている方がいらっしゃいましたのでありがたく使わせていただきました。

https://github.com/thejunkjon/android-tools/tree/master/build/android-9.0.0_r33/aapt2/arm64-v8a/bin

上記のサイトに行き、Download ボタンを押下して、aapt2 ファイルをダウンロードしてください。

## 設置

Android の何か適当なファイル管理ツールでの操作になります。
私は、X-plore という Android アプリを使用していますが、ファイルを操作できれば何でも良いと思います。
先程ダウンロードした Android Studio, SDK tools を UserLAnd または Termux の Ubuntu から見える位置に設置します。

### UserLAnd の場合

以下の対応表を見て、好みの位置に設置して下さい。

| Ubuntu | Android |
| --- | --- |
| /storage/internal/ | （本体 側）/sdcard/Android/data/tech.ula/files/storage/ |
| /storage/sdcard/ | （SD Card 側）/storage/(SD Cardの名前)/Android/data/tech.ula/files/storage/ |

### Termux の場合

以下の対応表を見て、好みの位置に設置して下さい。

| Ubuntu | Android |
| --- | --- |
| /sdcard/ | （本体 側）/sdcard/ |
| /storage/(SD Cardの名前)/ | （SD Card 側）/storage/(SD Cardの名前)/ |

## JDKのインストール

Ubuntu での操作になります。
まだデスクトップ環境を立ち上げる必要は無いので、シェルだけ立ち上げたほうが実施しやすい方はそうして下さい。

openjdk 8 をインストールします。
なお、Termux は root アカウントのため、先頭の sudo は不要です。

```

# openjdk 8 のインストール
sudo apt install -y openjdk-8-jdk

# openjdk 8 がインストールされているか確認
ls /usr/lib/jvm/java-8-openjdk-arm64

# テキストエディタ vim をインストールしていない人はインストール
sudo apt install -y vim

# 環境設定ファイルの編集
sudo vim /etc/enviroment

```

enviroment ファイルには以下を記載して保存します。

```

JAVA_HOME="/usr/lib/jvm/java-8-openjdk-arm64"

```

vim の操作方法を知らない人は以下だけ覚えればなんとかなります。

| キーボードのキー | 役割 |
| --- | --- |
| i | コマンドモードから入力モードに入る |
| ESC | 入力モードを抜けてコマンドモードに戻る |
| :wq | 保存して終了する。コマンドモードで操作すること。 |

保存したら環境設定ファイルを自分の環境に反映します。

```

source /etc/enviroment

```

Arm64版の openjdk 11 だと Android Studio が動作しません。
もし 11 も入れている人が居るのでしたら、後述のおまけに書かれている方法で 8 に切り替えましょう。

## 環境の設定

```

# .bashrc に aapt2 の設定を記載する
cd
vim .bashrc

```

.bashrc の一番下辺りにでも、以下を記載して保存して下さい。

export ANDROID_DATA=/data

今回に限り、記載した設定を手動で実行します。
次回からは自動的に実行するので以下の操作は不要になります。

```

source .bashrc

```

## Android SDK tools のインストール

続いて、Android SDK tools をインストールします。

```

# UserLAnd の場合
mkdir -p /home/(自分のID)/Android/Sdk
cd （sdk-tools-linux-4333796.zip　のあるディレクトリ）
cp sdk-tools-linux-4333796.zip /home/(自分のID)/Android/Sdk
cd /home/(自分のID)/Android/Sdk/
unzip sdk-tools-linux-4333796.zip

# Termux の場合
mkdir -p /root/Android/Sdk
cd （sdk-tools-linux-4333796.zip　のあるディレクトリ）
cp sdk-tools-linux-4333796.zip /root/Android/Sdk
cd /root/Android/Sdk
unzip sdk-tools-linux-4333796.zip

```

UserLAnd の場合には ID ごとにディレクトリが変わりますが、ID は最初に Ubuntu を選択した時に登録する ID になります。
おそらくコマンドプロンプトの左側に書いてあるはずですので、その値を使用して下さい。

## Android Studio のインストール

いよいよ Android Studio のインストールです。

```

# UserLAnd, Termux 共通

cd （android-studio-ide-191.6010548-linux.tar.gz　のあるディレクトリ）
cp android-studio-ide-191.6010548-linux.tar.gz /usr/local/
cd /usr/local/
tar -xvzf android-studio-ide-191.6010548-linux.tar.gz
cd /usr/local/android-studio/bin/
sudo chmod +x studio.sh

```

Android Studio 自体のインストールはここまでですが、後で外部ツールの一部を手作業で作成して設置する必要があります。

## Android Studio の設定

ここからは Ubuntu のデスクトップ環境での操作になります。

注意点ですが、XSDLを使用している方は、font scale を小さく（私は 0.5 にしました）設定して下さい。
大きく設定すると Android Studio のダイアログが、画面よりも大きくなってしまいボタンが画面からはみ出して押せなくなります。
また解像度が低くてもダイアログが画面からはみ出してしまうので、ある程度の大きさが必要なようです。私の場合は、1280x720 にしてあります。

コマンドラインから studio.sh を実行して Android Studio を立ち上げます。

LXTerminal （画面左下の鳥のマーク → System Tools → LXTerminal） 等を立ち上げて以下のコマンドを実行して下さい。

※私の場合にはデスクトップ環境にLXDEを使用しているので画面左下の鳥のマークと書いていますが、Xfceの場合には左上と読み替えて下さい。

```

# UserLAnd, Termux 共通

/usr/local/android-studio/bin/studio.sh

```

設定ファイルをインポートするダイアログが出るので、設定ファイルがあれば指定してOKボタンを押下してください。
なければ、そのままOKボタンを押下してください。

android studio（なぜか小文字）が書かれたスプラッシュウィンドウが出た後に、何やらデータを Google に送って欲しいというダイアログが出ます。
好きなボタンを選んで下さい。

Welcome ダイアログが出るので、Next ボタンを押下してください。

Install Type ダイアログが出ますが、私は Standard しか選んだことがないので、ここから先は Satndard を選んだものとして話を進めます。Next ボタンを押して下さい。

Select UI Theme ダイアログが出るので、好みのデザインを選択してから Next ボタンを押して下さい。

Veryfy Settings ダイアログが出るので、 Next ボタンを押下します。もしここでエラーメッセージが出るようでしたら、SDK Tools のインストール先が間違っているので、一旦 Cancel ボタンを押下して Android Studio を終了し、インストール先を修正してから再度 Android Studio を立ち上げて下さい。

Emulator Settings ダイアログが出ますが、特にやることはないので Finish ボタンを押下します。

Downloading Components ダイアログが出てコンポーネントをダウンロードします。ダウンロードが終わったら、Finish ボタンを押下します。
私の環境ではダウンロードに10分ほど掛かりました。

Android Studio ダイアログが出ますので、Start a new Android Studio project を押下します。

Create New Project ダイアログが出ますので、適当なパネルを選択し、Next ボタンを押下します。

Configure your project ダイアログが出ますので、API レベルは自分のスマートフォンの Android のバージョン（スマートフォンごとに Android の設定画面のメニューが違うので、Android のバージョンの確認方法は各自調査してください）に合わせて、他は適当な値を設定し、Finish ボタンを押下します。
ここでちょっと固まりますが、あわてず待ちましょう。しばらく待つと IDE が立ち上がるはずです。

右下に 2 processes running... の文字が見えたら gradle と呼ばれるビルドツールを自動的にダウンロードして、ビルドを行います。

gradle の動作が止まったら、メニューから File → Project Structure を選択して Project Structure ダイアログを開いて下さい。
SDK Location の JDK locations を JAVA_HOME に設定し、OK ボタンを押下します。

再びビルドが始まるので、気長にエラーが出るまで待ちます。
ビルドが始まらなかったら Android Stdio のメニュー Build → Rebuild Project を選択します。

ここでは gradle が使用する外部ツールでエラーが発生します。
Android Studio の下の方に Gradle Sync という文字が出ており、その右側にバーが出ているはずです。そのバーの動きが止まるまで待って下さい。
環境にもよりますが、私が UserLAnd で行ったときには10分以上はかかりました。

gradle がオフラインで動作するように設定します。
メニューから File → Settings を選択して Settings ダイアログを開いて下さい。
Build, Execution, Deployment → Gradle を選択し、Global Gradle settings にある Offline work にチェックを入れて、OK ボタンを押下します。
この処理は後述の jar ファイルが置き換えられないようにできないかなと思って設定していますが、ちょっと調べた限りでは置き換えが起こるかどうか分かりませんでした。。。←どうやらオンラインのままでも置きかわらないようです。でもオフラインの方が普段は速いので、オフラインにしておいましょう。たまに（LXDEからXfceに環境を変えたときなど）ビルド時にオフラインを解除してとエラーメッセージが出るときがあるので、その時に一旦解除してビルドを行い、再びオフラインにすると良いと思います。

## aapt2 の為の jar ファイルの作成

先程、エラーがでましたが、原因は appt2 というツールです。
このツールの公式版は Intel CPU 向けなので Arm64 CPU であるスマホの上だと動作しません。
Arm64 CPU 版の aapt2 に置き換えます。

aapt2 は jar ファイルに含まれているので、まずは jar ファイルを探します。

画面左下の鳥のマーク → System Tools → File Manager PCManFM（以後、PCMan と呼びます） を選択します。
PCMan が立ち上がったらメニュー View → Show Hidden にチェックを入れます。
以下のフォルダを開いて下さい。

・UserLAnd の場合

/home/(ユーザーID)/.gradle/caches/modules-2/files-2.1/com.android.tools.build/aapt2

・Termux の場合

/root/.gradle/caches/modules-2/files-2.1/com.android.tools.build/aapt2

この下に aapt2-x.x.x-xxxxxx-linux.jar (x にはバージョンを表す数字が入る)があるはずですので探して下さい。
proto とついている方は今回は無視して大丈夫です。

aapt2-x.x.x-xxxxxx-linux.jar をどこかにコピーします。
ファイル名の拡張子を jar から zip に書き換えて解凍します。
aapt2 が入っているはずなので、最初にダウンロードした Arm64 CPU 版の aapt2 に置き換えます。
META-INFフォルダ、aapt2、NOTICE の3つを、aapt2-x.x.x-xxxxxx-linux.zip に圧縮します。
ファイル名の拡張子を zip から jar に書き換えます。
jar ファイルを、最初に見つけた jar ファイルの位置に上書きします。

## Android Studio で再びビルド

Android Studio に再び戻り、メニューの Build → Rebuild project を選択して、リビルドでエラーが発生しないことを確認して下さい。

続いてメニューの Build → Build Bundle(s) / APK(s) → Build APK(s) を選択して APK ファイル（Androidアプリケーションのインストール用パッケージ）を作成してみて下さい。
右下に Build APK(s) というインフォメーションが出て、文字列の中に locate の文字が出るので、その文字列をクリックして下さい。
フォルダが開いて、その中に拡張子が apk のファイルが生成されていたら成功です。

試してみたい方は、APK ファイルを Android 側に渡して、インストールを試してみましょう。
もしインストールで解析ができないとか言われた場合には、自分のスマートフォンの Android のバージョンが APK ファイルの指定しているバージョンよりも古い可能性がありますので、プロジェクトを新たに作成し、自分のスマートフォンの Android のバージョンに合わせたSDKを（プロジェクトの生成ダイアログの Minimum API level の設定）合わせて下さい。

以上で開発環境の構築は終わりです。
空いた時間にでも軽く（？）開発するのもおつなものかもしれませんね。

## おまけ

### openjdk 11 を入れてしまった人の為の解決方法

まずは先述の通り、openjdk 8 をインストールします。

続いて以下のコマンドを実行して java-8-openjdk-arm64 が選択肢に出るので、番号で選択して下さい。

```

sudo update-alternatives --config java

```

最後に先述の通り /etc/environment を記載して JAVA_HOME 等を設定します。

### デスクトップのメニューに Android Studio を入れる

Android Studio を立ち上げたら、メニューの Tools → Create Desktop Entry... を選ぶことでデスクトップのメニューに入れることができます。
次回からは、LXDEなら左下の鳥のマーク、XFCEなら左上のマークをクリックしてメニューを出し Programming > Android Studio と選択すると立ち上がるようになります。

## 参考サイト

[Ubuntu18.04にJavaを導入する方法（JREやJDKの違いについても解説）](https://www.sejuku.net/blog/85358)