Unityを4.5にアップグレードしたところ、今まで使えていた Android Shared Library が突然使えなくなりました。
エラーの内容は様々ですが、主に
- 実機端末で発生する
- Unable to find (ライブラリ名) というエラーが出る
- DllNotFoundExceptionが発生する
というものです。
以下のページに解決のヒントがありました。
DllNotFoundException, prefectly worked before Unity 4.5
まず、Android側の仕様として、Shared Libraryのファイル名は "lib" で始まり、".so" で終わる必要があります。
次に、Unity側の仕様として、DllImportを記述する際には頭の "lib" と終端の ".so" を除いたものを指定する必要があります。
こちらのページにもハッキリと記載がありますね。
Androidのプラグインをビルドする / Building Plugins for Android
Unity4.5より前のバージョンではこの辺りのルールが緩かったようで、
[DllImport("libhoge")]
のように記述してもライブラリがインポートされていましたが、Unity4.5以降ではこの辺りのルールが厳格になり、インポートに失敗するようになります。
自分のケースはまさにこれで、
- ライブラリ名は「libhoge.so」だった
- [DllImport("libhoge")] と記述していた
のが災いしました。
解決方法としては、前述のルールに沿うように
[DllImport("hoge")]
と修正したところ、動くようになりました。