こんにちわ、オオバです。

UnityでAndroid向けにIL2CPPビルドしたときのエラーです。
以下のようなログが出力したときの対処法を紹介します。

Exception: /Applications/Unity/Hub/Editor/2018.3.7f1/Unity.app  
/Contents/il2cpp/build/il2cppcore/il2cppcore.dll did not run properly!  

パスに日本語が含まれているまたは参照エラー

【Android】IL2CPPビルド失敗時に考えられること2点_0

結論を簡単にまとめます。

  1. パスに日本語が含まれている
  2. 参照エラー

↑まずはこの2つを疑ってみましょう。

エラーの原因は前後のログに出力されていることもあるため、
コンソールをしっかり読むことが大事です。

詳細の解説をしていきます。

この記事の内容

日本語名パスが含まれるとエラー

【Android】IL2CPPビルド失敗時に考えられること2点_1

Unityプロジェクトまでのパスに
日本語が混じっているとビルドは失敗します。

あまり想定されないケースですが、
UnityプロジェクトのAssets配下に
日本語名のPrefabが入っていても問題はありません

シンボル定義未椅子の参照エラーだった

【Android】IL2CPPビルド失敗時に考えられること2点_2

今回はコチラが原因でした。

エラーログ内に以下のような記述がある場合、
参照エラーが起きています。

error: undefined reference to 'Hoge_'  

この場合、Hoge_メソッドが存在しないということなので、
エディタの全文検索でHoge_を探します。

シンボル定義ミスによるエラー

iOS向けプラグインなのに#if UNITY_IOS
くくっていなかったのが原因でした。

【誤】Androidでビルドエラー
[DllImport("__Internal")]  
private static extern string Hoge_();  

【正】ビルド成功
#if UNITY_IOS
    // iOSだけの処理をUNITY_IOSで囲うことで、  
    // Androidビルドから除外する  
    [DllImport("__Internal")]  
    private static extern string Hoge_();  
#endif

まとめ : IL2CPPビルド失敗時に2点考えられること

【Android】IL2CPPビルド失敗時に考えられること2点_3

Android向けIL2CPPビルドエラーで考えられる2つの原因。

記事の内容を簡単にまとめとこんな感じです。

複数プラットフォーム同時開発において
シンボル定義はトラブルの1つ です。

理想はシンボル定義が無いこと。
しかし各プラットフォーム固有の処理は
どうしても発生します。

そんな時に気にしておきたいことは、
他の開発者の環境も考慮しておくことです。

チームメンバーの大半がMacユーザーでも
一部のメンバーがWindowsということもあります。

それぞれで動作するように、
シンボルは慎重に定義すべきでしょう。

期間限定 最大95%オフセール
効率UPメガバンドル開催中!最大95%オフ!!!
期間 : 11月1日午後15時59分まで
オススメ記事
検証環境
参考サイト