Unity2020.3.30のプロジェクトでAndroid 14(API Level 34)対応
結論から話をしますと、お手上げです/(^o^)\
経緯から話ますと、
仕事の依頼で、とあるゲームアプリでGoogleさんから警告を受けていたアプリがあり10月末までに対応しないと
アプリのアップデートをリリースできなくなるぞっていう通知がきていたようですが、その期限を10月末までに
延長して放置していたそうです。
で、ギリギリの今月になって私のところに話がきたのですがかなり困った問題が発生しました。
実はAPIだけではなくて、ストアのbilling Libraryをバージョンをあげろっていうのも通知されてきていました。
とりあえず、調査しながら対応していく方針として早速ソースコードの解析と設定を解析しました。
Billing対応
これに関してはパッケージマネージャーの
In App Purchasing
のバージョンをあげることで対応できそうというのが分かりアップグレード・・・したら問題が発生しました。
何かというと「GUID競合問題が発生し、新しいモジュールが無視される」という現象でした。
本案件でのプロジェクトで利用していたのが2020.3.30でした。
これは色々理由があるのですが、開発していた頃まだ出始めていたECS(Entity Component System)の0.16を利用していた関係です。
Unity公式がバグであることを認めており、2020.3.48で問題を修正したという記録が残されていました。
参考: https://discussions.unity.com/t/guid-conflict-occurs-when-importing-unity-iap-package-4-12-0/950054
正直やりたくはなかったですが、ビルドバージョンを48にアップグレードすることにしました。
Android API Level 34対応
ソースコードの修正等は実施せずにAPIのレベルを設定であげてコンパイルできたので問題なく実行ファイル
が作成できた・・・と思いました。
ここからが沼の始まりでした。
いきなりアプリが落ちるんだが?
ビルドできたので実機で稼働確認して終わりだな~♪と思って浮かれていた時期もありました。
実機に実行ファイルをインストールして、実行してもいきなり落ちる。
あれ・・・へんだな・・・あはは・・・いやそんな・・・
みたいなやり取りして、全然起動しない!
ええ、ググりましたとも。
そうするとでてきました。
またバグぢゃねーか(´;ω;`)ウッ…
参考:https://discussions.unity.com/t/android-14-api-level-34-in-unity-2020-lts-and-2021-lts/933479
参照:https://issuetracker.unity3d.com/issues/android-targetapi-34-crash-on-launch
困ったことになった
どうやら、
「
Android 14 デバイスの開発ビルドでは、ブロードキャスト レシーバーの登録時に EXPORTED/NOT_EXPORTED フラグが欠落していたため、クラッシュが発生していました。」
ということだそうです。( ´_ゝ`)フーン
Unityの内部の話だと思いますが、知らんがなヽ(`Д´)ノプンプン
阿鼻叫喚のコメントが続いてますが、解決策がない。
そして致命的なのはLTSから外れてる・・・。
頼むから責任をもって数年間は致命的なバグぐらい修正して欲しいんだが(´;ω;`)ウッ…
結論 Unityのメジャーバージョンをアップグレードする必要があるのだが・・・
現時点で大規模な改修が必要となることが分かっています。
これは一番の原因は「ECS」にあります。
Pre版で利用していたゲームが悪いのですが、ほぼ書き直しぐらいのインパクトがあります(笑)
これ、10月末までに対応しろって言われても工数が全然足りません。
なので詰んでいる状態ですね。
色々、あがこうとしました。
android studioの形式にエクスポートしてandroid studioでビルドしようとしてもエラーになります。
色々試してみましたがダメ。
苦肉の策として、クラッシュするバージョンで審査にだしたらどうなるのか試しました。
結果、通りました(笑)なんでだ
同じような事情をしているのかもしれませんね、googleさんでも。
つまり、「クラッシュ版」だしてストアからの締め出しを回避しつつその間にバージョンアップして大規模な改修する
というのがいいのかもしれません。
いや、そもそもギリギリで頼んでくるからこんなことになるんだよなあと。
こればかりは白旗です。