【Unity】リリース前レポートでAndoridの互換性の警告が出る

【Unity】リリース前レポートでAndoridの互換性の警告が出る

Google PlayでAndroid向けにアプリをリリースする際、Play Consoleにapkやaabをアップロードします。この時、自動で複数機種でテストしてくれて、リリース前レポートとして結果を教えてくれる便利な機能があります。

この記事ではリリース前レポートで表示される警告について情報共有させてください。

Unityでアプリを作った際にリリース前レポートを確認すると、警告が出ることがあります。

最初に結論からいうと、「Android の互換性」について「MethodHandles$Lookup」の警告が出ているだけなら無視しても問題ないそうです。(Unityフォーラムの回答より)

 

 

多分この記事に辿り着いたのはリリース直前の超クッソ激烈に忙しいタイミングだと思うので、この結論だけ見たら作業に戻って大丈夫だと思います。あ、「MethodHandles$Lookup」以外の警告が出てたらコードを見直してくださいな。

 

 

環境

macOS 10.15 Catalina

Unity2018.4.23f1

 

リリース前レポート

Play Consoleにアプリのパッケージをアップロードすると、自動的に10機種のAndroid端末でテストを行ってくれます。アプリの安定性やパフォーマンスなどについて確認してくれて、何か問題があれば警告やエラーといった形で教えてくれるので、問題を特定するのに役立ちます。

リリース前レポートはFirebase Test LabのRoboテストを使っていて、もっとカスタマイズしてテストしたい! という時にはこのRoboテストを使ってみると良いと思います。

無料の範囲だと1日に割り当てられている端末の数は限られていますが、それでも便利に使えると思います。こんなこと言いながら私はまだ「リリース前レポートでいいかなー」とRoboテストを使っていないんですけど(笑)

 

Andoridの互換性の警告

Unity製アプリをアップロードした際、このリリース前レポートで表示される可能性のある警告は以下のものです。

StrictMode policy violation: android.os.strictmode.NonSdkApiUsedViolation: Ljava/lang/invoke/MethodHandles$Lookup;-><init>(Ljava/lang/Class;I)V

スタックトレースを全部コピペすると長くなるので、最初の行だけ表示しています。

この中に「MethodHandles$Lookup」が含まれています。

Android 9(API Level 28)以降は、非SDKインタフェースの使用が制限されているので、該当する処理があると警告が出るようになりました。対象となるメソッドは以下のグレーリストに掲載されています。

 

 

グレーリストのAPIは即クラッシュするものではなく、今のところ使うことはできますが、いずれは直す必要のあるもの、くらいの位置付けのようです。冒頭に紹介したフォーラムでUnityの中の人の回答を読むと、Google社と協力しながら対策を進めているとのことなのでいずれ修正されると思います。

 

非SDKインタフェース?

非SDKインタフェースとは、公開APIでない、@hideなどで隠匿されたクラスやメソッドなどのこと。通常、隠匿されたクラスやメソッドにアクセスすることはできませんが、リフレクションやJNIなどを使って力技でアクセスすることができます。

開発者視点では便利な面もありますが、ユーザー視点だとアプリのクラッシュリスクが高まるので、ユーザーエクスペリエンスが損なわれる可能性も。アプリがクラッシュするということは開発者がすぐに対応しなきゃいけないということでもあるため、翻って自分自身が辛い思いをするから使うのを止めようね、というのが非SDKインタフェースの制限の主旨のようです。

非SDKインタフェースを使わないことによる安定性の向上については以下の記事も目を通しておくと良いでしょう。(Google翻訳が便利です)

 

 

現段階ではそのままでいい

リリース前レポートで「MethodHandles$Lookup」の警告だけが出ている状態であれば、今のところ無視していいようです。

この情報はUnityフォーラムでUnityの中の人が答えている回答から判断しています。以下のページの下の方に、2020年6月12日の日付でJuliusMさんが回答している部分です。

 

この回答をみるに、UnityのチームとGoogle社で協調して対応に当たっているようなので、いずれ修正されると思います。

 

まとめ

リリース前レポートで「MethodHandles$Lookup」の警告だけが出ている状態なら無視して大丈夫です。ただし、それ以外にも警告が出ている場合はコードを見直すようにした方が良さそうです。

リリース前に警告が出ると結構ビビりますよね。慌ててググって上で紹介したフォーラムを見つけた時にはホッと一安心でした。

安定したアプリの提供という観点からGoogle Playの要件もどんどんアップデートされていくので、定期的に情報をウォッチすると良さげ。

 

     

ゲーム開発の攻略チャートを作りました!

CTA-IMAGE

「ゲームを作ってみたいけど、何から手を付けていいか分からない!」


そんなお悩みをお持ちの方向けに、todoがアプリをリリースした経験を中心に、ゲーム作りの手順や考慮すべき点をまとめたe-bookを作成しました。ゲーム作りはそれ自体がゲームのように楽しいプロセスなので、「攻略チャート」と名付けています。


ゲームを作り始めた時にぶつかる壁である「何をしたら良いのか分からない」という悩みを吹き飛ばしましょう!