UnityでNuGetパッケージを使用してIL2CPPを使用した時の参照エラー対策
初めてUnityでNuGetパッケージを使用してみたのですが、
IL2CPPでビルドした場合のみでバグが発生してしまいました。
今回、解決までの四苦八苦をまとめておきます。
NuGetパッケージ導入方法
この記事を参考にNuGetパッケージを導入しました。
「Scropting Backend」の設定をIL2CPPではなく、Monoで
ビルドを行った際には何も問題なく動いていました。
エラー内容
公開前に、いざ64bitに対応させようと思いIL2CPPに切り替えてビルドした結果、
実機でデバッグした際に上手く動かない!
今回、私はNuGetパッケージから「Taglib」というパッケージを導入していました。
その中のクラスが見つからない。。。という参照エラーが発生していました。
対応内容
1. Projectの「Assets」フォルダ内に「link.xml」という名前のファイルを追加
※「Assets」フォルダ以下ならどこでもOKらしい・・・
2.「 link.xml 」に以下のコードを記入
対応は以上です。あとはいつも通りビルドしていただければ
参照エラーは直っています。
エラー原因
上記の参考サイトにも書いているのですが、
自分なりにかみ砕いた解釈をまとめると・・・(間違ってたらすみません)
IL2CPPでビルドすると、ユーザーが手動で追加したdllは削除される。
だから、「link.xml」で手動追加dllの削除・保持を指定する必要がある。
※.厳密には、手動追加かつGameObjectに設定したスプリクトファイルの
コードが呼び出していないクラスが削除される。と書いてましたが、
ちゃんと呼び出すようにコードを変更しても意味が無かったので
何をしても手動dllは削除される。という考えで対策することにしました。
最後に
今回出したアプリは、公開前に
「AppBundle」と今回の件で2つの初エラーが急に来たので
めちゃくちゃ泣きそうでした・・・
そんな直前に苦しめてくれたAndroidアプリ!
通常の音楽プレーヤーに、
再生楽曲のテンポをあなたの走るテンポに合わせる!
という面白機能を合わせてみました。
皆さんぜひ、ダウンロードして色々文句言ってください!
個人製作でロクに宣伝もできないので入れてみました・・・