コガネブログ

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

java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/activity/result/ActivityResultLauncher;

概要

AndroidJavaException: java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/activity/result/ActivityResultLauncher;
java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/activity/result/ActivityResultLauncher;
    at java.lang.reflect.Executable.getParameterTypesInternal(Native Method)
    at java.lang.reflect.Method.getParameterTypes(Method.java:186)
    at java.lang.Class.getDeclaredMethods(Class.java:1915)
    at com.unity3d.player.ReflectionHelper.getMethodID(Unknown Source:92)
    at com.unity3d.player.UnityPlayer.nativeRender(Native Method)
    at com.unity3d.player.UnityPlayer.-$$Nest$mnativeRender(Unknown Source:0)
    at com.unity3d.player.UnityPlayer$F$a.handleMessage(Unknown Source:122)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loopOnce(Looper.java:201)
    at android.os.Looper.loop(Looper.java:288)
    at com.unity3d.player.UnityPlayer$F.run(Unknown Source:24)
Caused by: java.lang.ClassNotFoundException: Didn't find class "x

Unity プロジェクトに導入している Firebase 関連のパッケージをアップデートしてから
Play Asset Delivery を使用して Android ビルドしたら
アプリ起動後に上記のエラーが発生する現象に遭遇した

Play Asset Delivery を使わずにビルドした場合はエラーが出ない状況だった

解決

Firebase 関連のパッケージをアップデートする際に
Google Play 関連のパッケージも一緒にアップデートしたことが原因だった

  • com.google.android.appbundle-1.9.0.tgz
  • com.google.play.assetdelivery-1.9.0.tgz
  • com.google.play.common-1.9.0.tgz
  • com.google.play.core-1.8.3.tgz

上記のようにアップデートした Google Play 関連のパッケージを

  • com.google.android.appbundle-1.8.0.tgz
  • com.google.play.assetdelivery-1.8.2.tgz
  • com.google.play.common-1.8.2.tgz
  • com.google.play.core-1.8.2.tgz

もともと導入していた上記のバージョンに戻してから
Play Asset Delivery を使用して Android ビルドしたらエラーが出なくなった

補足

Maven Repository から「activity-1.6.0.aar」を入手して
「Assets/Plugins/Android」フォルダに入れるとエラーが出なくなるという情報もあったが
自分の環境だと別のエラーが発生するようになってしまい、このやり方だと解決しなかった