Unity2020のプロジェクトをUnity2022にアップデートした後に初めてAndroidビルドしたら起きた。
エラー
Exception: OBSOLETE - Providing Android resources in Assets/Plugins/Android/res was removed, 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.
環境
Unity2022.3.25f1
原因
Unity2021のアップデートガイドに記載がありました。
https://docs.unity3d.com/2021.2/Documentation/Manual/UpgradeGuide2021112.html
Unity2021からAndroidビルド時の
Assets/Plugins/Android/[res, assets]
の扱いが変わったようです。
- Unity no longer copies Gradle
project assets located in Assets/Plugins/Android/[res, assets] to the Gradle project.
- Previously you could place Gradle resources in this folder and Unity copied them into the Gradle project. You should now use AAR or androidlib plug-ins to pass additional Gradle resources to the application.
- If you place project assets in this folder, Unity shows a build error message.
訳
- Unityは、Assets/Plugins/Android/[res, assets] フォルダ内にある Gradle プロジェクトのアセットを、Gradleプロジェクトにコピーしなくなりました。
- 以前は、このフォルダにGradleリソースを置くことで、UnityがそれらをGradleプロジェクトにコピーしていました。現在は、追加のGradleリソースをアプリケーションに渡すために、AARまたはandroidlibプラグインを使用する必要があります。
- このフォルダにプロジェクトアセットを置くと、Unityがビルドエラーメッセージを表示します。
つまり、Unity 2021.2以降では、Assets/Plugins/Android
フォルダ内の res や assets フォルダにGradleリソースを直接置くことができなくなりました。代わりに、AARまたはandroidlibプラグインを使ってGradleリソースを管理する必要があります。このフォルダにプロジェクトアセットを置くと、Unityがビルドエラーを表示するようになります。
対応 (Firebaseとか使ってない場合)
Assets/Plugin/Android以下にres.androidlibというフォルダを作成
その中に既存のAssets/Plugins/Android/resを移動する
この対応を自動でやる場合は以下のコマンドをプロジェクトのルートディレクトリで実行すればOK
mkdir -p "Assets/Plugins/Android/res.androidlib" mv "Assets/Plugins/Android/res" "Assets/Plugins/Android/AndroidManifest.xml" "Assets/Plugins/Android/res.androidlib"
対応(Firebase等つかってる場合)
一部のGoogle系のSDKを使用している場合は、Assets/Plugin/Android/AndroidManifest.xmlが自動で生成されてしまうので、最初の対応だとビルド時に競合する。
mkdir -p "Assets/Plugins/Android/res.androidlib" mv "Assets/Plugins/Android/res" "Assets/Plugins/Android/res.androidlib"
までは一緒
Assets/Plugin/Android/AndroidManfest.xmlは残したまま、
Assets/Plugins/Android/res.androidlib/AndroidManifest.xmlに以下の内容で生成
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="custom.android.res" android:versionCode="1" android:versionName="1.0"> </manifest>
その他
ブログをobsidianで書くようにしたので、タイトルにスラッシュを含められない
本来なら
Unity2022でAndoirdビルドエラー Assets/Plugins/Android/res was removed にしたかった
まあいいか
参考: https://support.unity.com/hc/en-us/articles/115005875443-Providing-Android-resources-in-Assets-Plugins-Android-res-is-deeeeeprecccateddd https://yuumekou.net/unity-error-rrreport-1/ https://forum.unity.com/threads/exception-obsolete-providing-android-resources-in-assets-plugins-android-assets-was-removed.1171829/#post-8651706