# インストール準備

「インストール準備」ドキュメントでは、インストール前に準備すべき事項について説明します。FIRERPAは多くのデバイスタイプとアーキテクチャをサポートしており、ここでは一般的な各種デバイスで事前に準備が必要な操作を例示します。実際の状況に応じて、どの方法を使用するかを判断してください。FIRERPAは全体としてクライアントとサーバーに分かれています。クライアントは主にPython関連のライブラリとAPIであり、サーバーはターゲットのスマートフォン上で実行されるサービスです。コンピュータにPythonライブラリをインストールしてスマートフォンを制御することもできます。同様に、Pythonでデバイスを制御する必要がある場合は、スマートフォンにAndroidサーバーをインストールして実行する必要があります。これは必須です。

## 基本要件

FIRERPAの最も理想的な実行環境は、root化された直後の状態（例：新規作成したエミュレータ、root権限付きのROM、Magiskでroot化した直後など）です。root化済みで、実行メモリが2GB以上、利用可能なストレージ容量が1GB以上のAndroidデバイスまたはエミュレータを準備してください。最新版のNoxPlayer、LDPlayer、またはAVDエミュレータの使用を推奨します。起動前に**必ず**以下の項目を確認してください：

- [X] Magisk Hideを無効にする
- [x] frida-serverを停止する
- [X] 確認後、デバイスを再起動する

```{important}
上記の操作を要件通りに行わない場合、互換性の問題により、FIRERPAのAPIやリモートデスクトップが正常に利用できなくなる可能性があります。
```

## システム設定

通常、お使いのスマートフォンでは以下の設定も行う必要があります。これらは必須ではありませんが、一度で成功させるために、時間がある場合に以下の設定を完了することをお勧めします。

### タイムゾーンと時刻の確認

システム設定を開き、「日付と時刻」を探し、**中国標準時**または現在地のタイムゾーンが自動設定されているか確認してください。時刻が正しいか、許容誤差の範囲内であるかを確認します。設定されていない場合は、**ネットワークから提供されたタイムゾーンを使用する**および**ネットワークから提供された時刻を使用する**をオフにし、手動で現在地のタイムゾーンと時刻に設定してください。

### ユーザー補助の無効化

システム設定を開き、ユーザー補助（システムまたは詳細設定内）を探し、ユーザー補助を使用するすべてのアプリ（例：Talkback、Auto.jsなど）を無効化またはアンインストールしてください。

```{note}
ユーザー補助機能が関連機能と競合する可能性があるため、FIRERPAのリモートデスクトップや関連APIが正常に利用できない場合にのみ確認してください。
```

## ネットワーク設定

実機、クラウドフォン、エミュレータなどのデバイスのネットワーク状況はそれぞれ異なります。実際の状況に応じて以下の設定を完了させる必要があります。そうしないと、インストール後にサービスへ正常にアクセスできません。

実機の場合、コンピュータとスマートフォンが同じネットワーク上にあることを確認するだけで十分です。エミュレータの場合、デフォルトで作成されたエミュレータは通常、ホストマシンのネットワークと通信できません。android x86（VMWareベースのAndroid仮想マシン）を使用している場合は、仮想マシンの設定でネットワークモードをブリッジモードに設定してみてください。LDPlayerやNoxPlayerなどのエミュレータでは、設定画面でプロンプトに従ってドライバをインストールし、ブリッジモードを有効にしてからエミュレータを再起動する必要があります。Android StudioのVirtual Deviceには関連する設定はありません。AVDに接続する必要がある場合は、まず `adb forward tcp:65000 tcp:65000` を実行し、`localhost` を使用して接続してください。

```{note}
フォワーディングされた、または元々ループバックアドレスにバインドされているサービスポートについては、127.0.0.1の代わりにlocalhostを使用することをお勧めします。なぜなら、中間者パケットキャプチャなどの一部の関連ツールが、USB経由での使用であるかどうかをlocalhostに基づいて判断するためです。
```

## その他の設定

### WSA (Windows Subsystem for Android)

WSA (Windows Subsystem for Android) を使用している場合、WSAのバージョンが2210.40000以上であり、root化済みであることを確認してください。次に、WSAの設定を開き、「Subsystem Resources」 -> 「Continuous」を選択し、「Advanced Networking」をオフにします。「Developer」を選択し、「Developer mode」をオンにしてタブを展開し、「Support single machine UI automation」をオンにします。その後、WSAサブシステムを再起動してください。

### AVD (Android Studio Virtual Device)

AVD (Android Studio Virtual Device) を使用している場合は、まずデフォルトのストレージ容量とメモリサイズを拡張してください。

Android StudioのVirtual Device Managerをクリックし、新しい仮想マシンを作成します。その後、対応する仮想マシンを見つけて、右側にある編集ボタン（鉛筆のアイコン）をクリックします。「Show Advanced Settings」をクリックし、「Storage」 -> 「Internal Storage」を見つけて、少なくとも2GBに設定し、RAMのメモリサイズを少なくとも4GBに設定します。

### Redroid (android in docker)

```{attention}
以下の方法は、他のLinuxディストリビューションには適用できない場合があります。
```

Redroid (android in docker) を使用している場合、公式が推奨する `Ubuntu 20.04` を例にとると、まず `linux-modules-extra` 関連のモジュールをインストールします。

```bash
apt install linux-modules-extra-`uname -r`
```

ファイル `/etc/modules` を編集し、以下の名前をコピーしてファイルの末尾に挿入し、現在のホストマシンを再起動します。

```bash
# redroid modules
mac80211_hwsim

binder_linux
ashmem_linux
```

最後に以下のコマンドを使用して起動します。`redroid_gpu_mode` およびその他の関連パラメータは、実際の状況に応じて変更してください。

```{attention}
以下のコマンドは公式のものとは異なる点に注意し、必ず下記のコマンドを使用してください。
```

```bash
docker run -itd --rm --privileged --pull always -v /lib/modules:/lib/modules:ro -v ~/redroid:/data -p 127.0.0.1:5555:5555 -p 127.0.0.1:65001:65000 redroid/redroid:12.0.0-latest androidboot.redroid_gpu_mode=guest
```

上記のコマンドでコンテナの65000番ポートをホストマシンの65001番ポートにマッピングしているのは、一部のツールが一時的にホストマシンの65000番ポートにバインドする必要があるため、競合を避けるために65001番ポートを使用しています。

```{note}
上記のコマンドで起動したAndroidコンテナには、ホストマシン上で `http://127.0.0.1:65001` を通じてアクセスする必要があります。
```