再現環境
Unity 5.1.2
XCode 6.4
エラー内容
Unityで製作したアプリを端末上で動作確認したいと思い、以下の手順を実行したところ、EXC_BAD_ACCESS エラーが発生してしまいました。
1. Unity上でiOS向けにビルド(IL2CPP)
3. 端末をマシンに接続して、XCodeの再生ボタンを実行
4. 実行してしばらくすると以下のエラーが発生
Thread 1: EXC_BAD_ACCESS (code=1, addoress=0x103c) だけではわかりませんね...エラーが発生している箇所は以下のコードなのですが、心当たりがない...
extern "C" bool AllocateRenderBufferStorageFromEAGLLayer(void* eaglContext, void* eaglLayer)
{
return [(__bridge EAGLContext*)eaglContext renderbufferStorage:GL_RENDERBUFFER fromDrawable:(__bridge CAEAGLLayer*)eaglLayer];
}
さらに下のウィンドウには
eaglContext = (void*)NULL
eaglLayer = (void*)NULL
と出ているのですが、意味がわからず...
ということで、調べていくと同じエラーが発生している人を発見しました。
When i build from unity to Xcode my build crashes how can i fix it - Unity Answers
IL2CPP Crash on OpenGL graphics device creation - Unity Answers
どうやら、IL2CPPでビルドしたソースコードをiOS 8.3 で実行しようとすると発生する模様。ちなみに、EAGLContextとは、OpenGL ESで描画するのに必要なリソースや状態を管理するiOSの実装のことのようです。
解決方法
iOS を 8.3 から 8.4 にアップデートしたらなおりました!
※ 当初 iPhone5が32bit、iPhone5sが64bitなのと関係しているのかと思い、ArchitectureがUniversalに設定されていたのをARMv7にしたりARM64にしたりしましたが、なおりませんでした...