UnityでAndroid13から14へアップデートする際に起きたこととその解決法

# 始めに
Android13から14へアップデートする手順は、
ProjectSetting>OtherSetting>Target API Level  を33から34へ変更。
ビルド時に34用のSDKが無いとエラーが出るのでそのままUpdateを選択。

32から33はこのままで問題なかったが、今回は起動時にクラッシュするようになってしまった。
エラーと解決した方法を載せていく。

# AndroidStudioをインストール
「GooglePlayConsoleのリリース前レポートにエラーは出るが、中断したというエラーしかなく詳細は分からない」ということがあった為、[インストール](https://developer.android.com/studio?hl=ja)
Logcatにログが出る為、鮮明にエラーが分かった。

# エラー①　No pending exception expected: java.lang.NoSuchMethodError
Logcatに以下のエラーが出た。
AssetPackManagerでメソッドが見つからなかったというエラー。
```
No pending exception expected: java.lang.NoSuchMethodError: 
No interface method getPackStates(Ljava/util/List;)Lcom/google/android/gms/tasks/Task; 
in class Lcom/google/android/play/core/assetpacks/AssetPackManager; 
or its super classes (declaration of 'com.google.android.play.core.assetpacks.AssetPackManager') 
```

これはGooglePlayPluginを最新バージョンにすることによって解決した。
[ここ](https://developers.google.com/unity/archive?hl=ja#google_play)から最新のPlay Asset Deliveryをダウンロードして上書きをした。

# エラー②　Update your Play Core Maven dependency to an Android 14 compatible version! 
以下は、GooglePlayConsoleの受信トレイに来ていたもの。
依存関係を更新してほしいとのこと。
```
Update your Play Core Maven dependency to an Android 14 compatible version! 
Your current Play Core library is incompatible with targetSdkVersion 34 (Android 14), 
which introduces a backwards-incompatible change to broadcast receivers to improve user security.
As a reminder, from August 31, Google Play requires all new app releases to target Android 14. 
Update to the latest Play Core library version dependency to avoid app crashes: 
https://developer.android.com/guide/playcore#playcore-migration
```
[公式サイト](https://developer.android.com/guide/playcore?hl=ja#playcore-migration)を参考にgradleファイルを書き換えていく。
gradleファイルについては[公式ドキュメント](https://docs.unity3d.com/Manual/android-gradle-overview.html#colliding-attributes)と[場所](https://toconakis.tech/unity-gradle-version/#:~:text=gradle%E3%81%AE%E8%A8%AD%E5%AE%9A%E5%A0%B4%E6%89%80%E3%81%AF,Gradle%E6%AC%84%E3%81%8C%E8%A6%8B%E3%81%A4%E3%81%8B%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82)を参考に。

```gradle
dependencies {
   
    implementation 'com.google.android.play:asset-delivery:2.2.1'

**DEPS**}
```

# エラー③　AndroidJavaException: java.lang.NoClassDefFoundError

Logcatに以下のエラーが出た。
```
AndroidJavaException: java.lang.NoClassDefFoundError: 
Failed resolution of: 
Landroidx/activity/result/ActivityResultLauncher;
```
ActivityResultLauncherというのが見つからないらしい。
これはgradleに直接入力して解決した。

```gradle
dependencies {
   
    def activity_version = "1.6.0"
    implementation "androidx.activity:activity:$activity_version"

**DEPS**}
```

# エラー④　JNI DETECTED ERROR IN APPLICATION: JNI NewStringUTF called with pending exception java.lang.NoSuchMethodError

```
'JNI DETECTED ERROR IN APPLICATION: 
JNI NewStringUTF called with pending exception java.lang.
NoSuchMethodError: No interface method getPackStates
(Ljava/util/List;)Lcom/google/android/gms/tasks/Task; 
in class Lcom/google/android/play/core/assetpacks/AssetPackManager; 
or its super classes (declaration of 'com.google.android.play.core.assetpacks.AssetPackManager')
```
com/google/android/gms/tasks/Task で getPackStates が見つからないらしい。
[同様のバグ](https://forum.unity.com/threads/play-asset-delivery-issue-discussion.1467866/)のサイトを参考にすると、Unity固有のエラーらしく、Unityのバージョンを更新したら解決した。

# 最後に

同じように困っている方の力になれば幸いです。