2023/9/27
久々に自分の書いた記事参考に Unity2021.3.24辺りでビルドしたら通らなかった…。私の記事は忘れていただいて、こちらの方が書かれた素晴らしい記事を参考にしてください。
https://kingmo.jp/kumonos/unity-2021lts-res-folda-build-error/
ありがたやー。
目的
Androidプッシュ通知用のアイコンを設定したい。
つまり Assets/Plugins/Android/res/drawable-... に アイコンを配置したい。
しかしビルドログを見ると何か言われてるので対処したい。
実行環境
MacOSX:10.15.7
Unity:2019.4.19f1
(AndroidStudioは使いません)
問題
Unity2019からか分かりませんが
Android用にバッチビルドを行い、ログを眺めていますと
OBSOLETE - Providing Android resources in Assets/Plugins/Android/res is deprecated, please move your resources to an AAR or an Android Library. See "AAR plug-ins and Android Libraries" section of the Manual for more details.
Deep-L先生に翻訳をお願いすると
廃止 - Assets/Plugins/Android/res に Android リソースを提供することは推奨されていません。リソースを AAR または Android ライブラリに移動してください。詳細はマニュアルの「AARプラグインとAndroidライブラリ」のセクションを参照してください。
まだ使えましたが いつ無くなるか不明。
リソースだけ追加したいのに AndroidStudio起動して AAR作れとかちょっと…
考察
先ほどの文章を読むと
See "AAR plug-ins and Android Libraries" section of the Manual for more details.
と書いてありますので、ググると Android Developers公式 が出てきました
・AARは ZIPファイル
・必須エントリは AndroidManifest.xml
(必須と書いてあるが Unityで使う分には たぶん必須ではない)
・決められたエントリ(ファイル or フォルダ)なら 含めることができる
対処
・aarはzip
・zip内には res/* だけでもOK(resより前のパスは含めないように)
> zipinfo hoge.aar
Archive: hoge.aar
Zip file size: xxxx byte, number of entries: xx
res/
res/drawable-hdpi/
res/drawable-hdpi/hoge.png
res/drawable-ldpi/
res/drawable-ldpi/hoge.png
...
ということで、あらかじめ resフォルダをzip化して拡張子aarにリネーム すればOKです。
私は流行(?)に乗って [参考URL]
IPreprocessBuildWithReportにて
・zip -r hoge.aar res -x "*.meta"
・元のresフォルダを除外
・AssetDatabase.Refresh()
IPostprocessBuildWithReportにて
・除外したresフォルダを元に戻す
・AssetDatabase.Refresh()
と行いました。
出来たapkの中を覗くと、無事 resフォルダが展開されていました。