コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【Unity】Play Asset Delivery 1.8.1 のパッケージを導入して Android ビルドしたらアプリ起動時に強制終了するようになった

概要

Throwing new exception 'No interface method getPackStates(Ljava/util/List;)Lcom/google/android/play/core/tasks/Task; in class Lcom/google/android/play/core/assetpacks/AssetPackManager; or its super classes (declaration of 'com.google.android.play.core.assetpacks.AssetPackManager' appears in /data/app/~~ITcdG6djEenNnVShaiA_gg==/XXXX-ptk0738eptMnm47ovBW02Q==/base.apk)' with unexpected pending exception: java.lang.NoSuchMethodError: No interface method getPackStates(Ljava/util/List;)Lcom/google/android/play/core/tasks/Task; in class Lcom/google/android/play/core/assetpacks/AssetPackManager; or its super classes (declaration of 'com.google.android.play.core.assetpacks.AssetPackManager' appears in /data/app/~~ITcdG6djEenNnVShaiA_gg==/XXXX-ptk0738eptMnm47ovBW02Q==/base.apk)
  at void com.unity3d.player.a.a(java.lang.String[], com.unity3d.player.IAssetPackManagerStatusQueryCallback) ((null):-1)
  at void com.unity3d.player.PlayAssetDeliveryUnityWrapper.getAssetPackStates(java.lang.String[], com.unity3d.player.IAssetPackManagerStatusQueryCallback) ((null):-1)
  at void com.unity3d.player.PlayAssetDeliveryUnityWrapper.getAssetPackState(java.lang.String, com.unity3d.player.IAssetPackManagerStatusQueryCallback) ((null):-1)
  at boolean com.unity3d.player.UnityPlayer.nativeRender() ((null):-2)
  at boolean com.unity3d.player.UnityPlayer.access$300(com.unity3d.player.UnityPlayer) ((null):-1)
  at boolean com.unity3d.player.UnityPlayer$e$1.handleMessage(android.os.Message) ((null):-1)
  at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:102)
  at boolean android.os.Looper.loopOnce(android.os.Looper, long, int) (Looper.java:201)
  at void android.os.Looper.loop() (Looper.java:288)
  at void com.unity3d.player.UnityPlayer$e.run() ((null):-1)

Logcat を見てみたら強制終了時に上記のエラーが発生していた

GitHub の Issue や Unity の Forum を見てみたら
1.7.0 にダウングレードすると直るとのことだったので
Play Asset Delivery のパッケージと、
Play Asset Delivery のパッケージが依存するすべてのパッケージをダウングレードした

  • com.google.play.assetdelivery-1.7.0
  • com.google.android.appbundle-1.7.0
  • com.google.play.common-1.7.0
  • com.google.external-dependency-manager-1.2.169
  • com.google.play.core-1.7.0

また、Play アプリ内レビューも実装していたため
Play アプリ内レビューのパッケージもダウングレードする必要があった

  • com.google.play.review-1.7.0

これらのパッケージの .tgz を Unity プロジェクトに追加して
Packages/manifest.json を変更した後に Android Resolver の Force Resolve を実行して
Android ビルドしたらアプリが正常に起動するようになった

メモ

Unity 2023.1.0a5 では修正されているとのことだったので
Unity 2022 や Unity 2021 でも修正が入るかもしれない