최근 cocos2d-x로 작업을 하면서 `JNI`를 좀 알아봐야 했다. 먼저 글에서는 편의상 `C/C++`을 `Native`라고 말함을 알린다. 이에 따라 JNI가 왜 `Java Native Interface`라고 이름지어졌는지 알 수 있을 것이다. 이 글에서는 Java 자체보다는 안드로이드 환경, 그리고 크로스 플랫폼 환경에 대한 설명에 좀 더 초점을 맞춰 썼다. 실행 환경 자체는 맥과 안드로이드이기 때문에 리눅스에 치중되어 있지만, 공유 라이브러리와 빌드 개념 자체에 대한 이해만 있으면 된다. 앞서 cocos2d-x를 언급한 것에서 눈치챘겠지만, 게임 엔진측 코드(C++)에서 안드로이드 플랫폼에 의존성이 있는 부분(Java)을 처리하기 위해 삽질하면서 정리한 것이다. JNI를 쓰는 방법에 대한 자료 ..
`libpng error: CgBI: unhandled critical chunk` iOS에서 libpng 라이브러리를 사용할 때, 위와 같은 에러가 뜨면서 텍스쳐를 잘 불러오지 못하는 문제가 있다. 특이한 것은 시뮬레이터에서는 문제가 없고, 실기기에서만 에러가 발생한다는 점이다. 해결 방법은 Xcode Build Settings에서 "Remove Text Metadata From PNG Files" 옵션을 "No"로 변경하면 된다. 아마 libpng 라이브러리를 사용할 때 시뮬레이터에서는 OSX의 libpng를 바로 사용해서 위 옵션 여부가 영향을 주지 않지만, 실기기에서는 영향을 받아서 그런 것으로 추측된다.
- Total
- Today
- Yesterday