【備忘録】Jenkins使ってAndroidのGradleビルドするとAapt2InternalException出たときの対処方法

# ▼はじめに
AndroidStduioで作成したプロジェクトをJenkinsを使ってビルドを行ったところエラーが出ました。
解消方法を調べてみましたが、かなり苦労したので備忘録として残しておくことにします。

# ▼開発環境
- Windows 10 Home 20H2
- Android Studio 3.5.3
- Android SDK Platform 29
- Android SDK Build-Tools 28.0.3
- Gradle 5.1.1
- Jenkins 2.263.3 LTS（Windows）

# ▼問題の現象
ローカル環境でビルドしAPKが生成できるところまで確認しました。
同じことをJenkins側でもやってみます。

Jenkins上でフリースタイルジョブを作成。
そこから「Windowsバッチコマンドの実行」を使って該当のプロジェクトをビルドしたところビルドエラーが発生しました。

以下、ログの一部です。

```
> Task :app:mergeDebugResources FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:mergeDebugResources'.
> 8 exceptions were raised by workers:
  com.android.builder.internal.aapt.v2.Aapt2InternalException: AAPT2 aapt2-3.4.2-5326820-windows Daemon #3: Daemon startup failed
  This should not happen under normal circumstances, please file an issue if it does.
  com.android.builder.internal.aapt.v2.Aapt2InternalException: AAPT2 aapt2-3.4.2-5326820-windows Daemon #0: Daemon startup failed
  This should not happen under normal circumstances, please file an issue if it does.
  com.android.builder.internal.aapt.v2.Aapt2InternalException: AAPT2 aapt2-3.4.2-5326820-windows Daemon #5: Daemon startup failed
  This should not happen under normal circumstances, please file an issue if it does.
  com.android.builder.internal.aapt.v2.Aapt2InternalException: AAPT2 aapt2-3.4.2-5326820-windows Daemon #6: Daemon startup failed
  This should not happen under normal circumstances, please file an issue if it does.
  com.android.builder.internal.aapt.v2.Aapt2InternalException: AAPT2 aapt2-3.4.2-5326820-windows Daemon #4: Daemon startup failed
  This should not happen under normal circumstances, please file an issue if it does.
  com.android.builder.internal.aapt.v2.Aapt2InternalException: AAPT2 aapt2-3.4.2-5326820-windows Daemon #2: Daemon startup failed
  This should not happen under normal circumstances, please file an issue if it does.
  com.android.builder.internal.aapt.v2.Aapt2InternalException: AAPT2 aapt2-3.4.2-5326820-windows Daemon #1: Daemon startup failed
  This should not happen under normal circumstances, please file an issue if it does.
  com.android.builder.internal.aapt.v2.Aapt2InternalException: AAPT2 aapt2-3.4.2-5326820-windows Daemon #7: Daemon startup failed
  This should not happen under normal circumstances, please file an issue if it does.


* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 34s
```

# ▼問題が解消されなかった方法
- `gradle clean` をバッチ実行の最初に実行する。
- 下記パスのgradleフォルダを削除し、再度Gradleをダウンロードし実行。
    - `C:\Windows\System32\config\systemprofile\.gradle`
- Android Studio を入れ直す。
- ワークスペースのパスを短くする。
    - ■参考サイト：[AAPT2 aapt2-3.5.2-5435860-windowsデーモン＃0：デーモンの起動に失敗しました - コードワールド](https://www.codetd.com/ja/article/12368250)

# ▼問題が解消された方法
Unityのフォーラムで同じように悩んでいる方を発見。

■参考サイト：[Batchmode build always fail with (Aapt2 Daemon startup failed)Gradle Error. - Unity](https://forum.unity.com/threads/batchmode-build-always-fail-with-aapt2-daemon-startup-failed-gradle-error.762926/)

内容を読むとJenkinsを実行しているユーザーを変えてたところ解消されたという記事のようです。
こちらを参考に変えてみたところ私も問題を解消することができました。

# ▼実行ユーザーを変更する前に注意事項
実行ユーザーを切り替えることでJenkinsの設定が初期状態に戻ります。
作業を行う前に予め設定やプラグインは退避するかメモしておき、復元作業を行ってください。

# ▼実行ユーザーを変更するまでの手順
1. `タスクマネージャー > 詳細タブ` にてJenkinsを実行しているユーザーを確認します。
下記の場合はSYSTEMユーザーで実行していることが分かります。
SYSTEMユーザーを今ログインしているユーザーに切り替えます。
![タスクマネージャー](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/75533/178787dd-0bad-025e-b2ab-fdedd56f1022.png)

2. `コントロールパネル > システムとセキュリティ > 管理ツール > サービス` 内に Jenkins があると思います。
![サービス](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/75533/ef1c7b8a-ded1-e5de-caa7-62296fef1b2f.png)

3. Jenkins 項目をダブルクリックしログオンタブにてアカウントを選択し自分のユーザー情報を入力しOKを押します。
![ユーザー](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/75533/1d7f964b-e79c-9aca-7f2f-367d11b15021.png)

4. パソコンを再起動します。
5. 再度タスクマネージャーを確認するとユーザーが切り替わっていると思います。
![タスクマネージャー2](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/75533/68f0f9b1-9d0a-82ea-7f8b-71ccf3d31223.png)

# ▼結果
この状態でJenkinsに再度アクセスし、
初期設定や前環境の移行作業を行い同様にビルドを行ったところ正常にビルドすることができました。

# ▼最後に
今回の対応の副産物で、システムの環境変数だけでなくユーザーごとに設定している環境変数も使えるようになったり、作業ユーザーのみインストールしていたツール等も使えるようになりました。

そもそも何故使えないのかと思っていたら実行ユーザーが原因だったようです。