脱力駆動開発記

ゲームアプリを作るエンジニアの技術メモ

MENU

【Unity】Unity2022でAndoirdビルドエラー Assets Plugins Android res was removed


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 フォルダ内の resassets フォルダに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