NinaLabo

個人ゲーム開発者の技術メモ

EXC_BAD_ACCESS: UnityでビルドしたソースコードをXCode経由で実行するとエラーになる件

再現環境

Unity 5.1.2

iOS 8.3 / iPhone 5

XCode 6.4

エラー内容

Unityで製作したアプリを端末上で動作確認したいと思い、以下の手順を実行したところ、EXC_BAD_ACCESS エラーが発生してしまいました。

1. Unity上でiOS向けにビルド(IL2CPP)

2. ビルドしたソースコードXCodeで開く

3. 端末をマシンに接続して、XCodeの再生ボタンを実行

4. 実行してしばらくすると以下のエラーが発生

f:id:ninagreen:20150816021816p:plain

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にしたりしましたが、なおりませんでした...