2016년 5월 6일 금요일

Attempting to call method 'System.Reflection.MonoProperty::GetterAdapterFrame' for which no ahead of time (AOT) code was generated.

서비스중인 앱의 새로운 버전을 iOS로 스위칭 하고 빌드하여 실행 시키는 도중에 이슈가 발생했다.

Attempting to call method 'System.Reflection.MonoProperty::GetterAdapterFrame' for which no ahead of time (AOT) code was generated.

런타임으로 발생한 이 애러는

시스템 제너릭에 라이버러리에 포함된 xml serializer 를 사용중에 발생하였다.

관련코드는 이전 버전과 같았는데 이러한 문제가 발생해

관련 키워드로 검색하고 이리저리 삽질을 진행

결론은 싱겁게도 Unity3d 의 iOS셋팅이 잘못 되엇던 것이였다.

Api Compatibility Level 을 .NET 2.0 Subset으로 변경하여 해결하였다.

이 문제를 해결하기 위해 방문했던 링크

http://forum.unity3d.com/threads/please-help-for-il2cpp-problem.302670/

http://devkorea.co.kr/bbs/board.php?bo_table=m03_qna&wr_id=52443&sfl=wr_subject%7C%7Cwr_content&stx=AOT&sop=and

http://docs.unity3d.com/Manual/iphone-playerSizeOptimization.html

http://answers.unity3d.com/questions/30930/why-did-my-binaryserialzer-stop-working.html

http://answers.unity3d.com/questions/406242/serialize-on-ios-that-is-aot-safe.html

http://answers.unity3d.com/questions/1089649/ios-xml-serialization-jit-exception.html

ios could not find developer disk image

iOS 를 최신으로 업데이트 하고

Xcode 에서 빌드하려는 찰나

ios could not find developer disk image 라는 메세지가 출력되며 빌드가 불가능 해짐

Xcode 가 새로운 iOS를 지원하지 않아서 발생한 문제로 보임

문제는 MAC OS 버전이 오래되어 Xcode 업데이트가 불가능한 상황

MAC OS 업데이트를 진행 후 Xcode 업데이트 가능 여부를 확인해야함.

2016년 4월 1일 금요일

Unity3d www.dispose() 프리징 현상 이슈

 에셋번들을 다운로드 중에 강제로 네트워크 연결을 끊을 경우 프리징 현상이 일어나는 단말기(갤럭시 노트4)가 있어 관련 사항을 정리함.

 coroutine 내에서 StartCoroutine() 함수로 다시 coroutine 을 호출하는 구조로 에셋번들을 진행함.

 상위 coroutine에서 다운로드 메니징을 진행하며 다운로드 시작시 다운로드 coroutine을 진행함

하위 coroutine 에서 다운로드를 진행중에 네트워크를 강제로 끊으면 프리징 발생

디버깅 결과

using (WWW www = new WWW(iOSUrl)
{
}

WWW.dispose() 함수가 호출되는 시점에서 프리징현상 발생

using 중괄호가 끝나면 자동으로 WWW.dispose()가 호출되는데

이때도 프리징 발생

코드를 여러 방면으로 수정 해보았으나 해결이 되지 않는 상황

네트워크 연결이 종료된 뒤로 다운로드 중에 WWW.dispose() 를 호출 하면서 문제가 없도록 하는 방법을 찾아야함

관련 링크

https://issuetracker.unity3d.com/issues/unity-freezes-when-www-dot-dispose-is-used-while-downloading-assetbundle

https://issuetracker.unity3d.com/issues/android-application-freezes-on-www-dot-dispose-if-connection-is-canceled

http://forum.unity3d.com/threads/www-dispose-freezes-unity-4-5.252167/


http://stackoverflow.com/questions/18353821/dispose-www-if-timeout-occurs-in-unity3d

2016년 3월 27일 일요일

Unity3d 5 에서 Vuforia 애러 발생 - Failed to load 'Assets/Plugins/QCARWrapper.dll'

유니티4에서 개발중인 프로젝트를 유니티5 로 마이그래이션을 진행했으나

문제가 발생하였다.

Vuforia 플러그인내의 QCARWrapper.dll 이 로드 불가능한 애러가 발생.

알아본 결과

64bit버전 유니티에서 발생하며

PlayMode에서 웹캠을 사용하는 것과 연관된 dll 파일이라

에디터 상에서 사용하지 않는다면 체크 해제 할 경우 애러 메세지는 사라진다.

정상적인 사용을 위해서는 32bit 버전 설치가 필요하다.

http://stackoverflow.com/questions/30119423/unity3d-failed-to-load-assets-plugins-qcarwrapper-dll

아래 글을 참조하여 시도 하였으나. 애러가 사라지지 않음.

2016년 3월 14일 월요일

Missing iOS Distribution signing identity 오류

두달만에 iOS앱 업데이트를 위해 빌드 하고 Archive -> Validate 과정에서 오류가 발생하였다.

Missing iOS Distribution signing identity for...

이유는 Apple Worldwide Developer Relations Certification Authority 인증서 기간 만료료

인한 문제였다(2016. 2. 15 만료)

그래서 새롭게 인증서를 받고 다시한번 시도를 해보았지만 문제가 계속 발생

Xcode를 업데이트 하고 다시 빌드하는 과정을 수차례 겪었지만 해결이 안됨

다행이

스텍오버플로우에서 방법을 찾게되었다.

http://stackoverflow.com/questions/32821189/xcode-7-error-missing-ios-distribution-signing-identity-for

이유는 이전 만료된 인증서를 따로 삭제해주지 않았다는것.

내 MAC의 키체인 설정이 만료된 인증서는 보지 않도록 되어 있었다.

만료된 인증서 보이게 셋팅하고 삭제하여  Validate성공.

2016년 2월 25일 목요일

iOS9 버전 url 접근 다운로드 허용 방법.

How do I load an HTTP URL with App Transport Security enabled in iOS 9? 

iOS9 버전 부터는 다이렉트로 url에 접근하면 권한 애러가 발생한다.
(unity the resource could not be loaded because the app transport security policy reqauires the use of a secure connection)
따라서 관련 이슈를 해결하기 위해서는 다음과 같은 과정을 진행해야 한다.

http://stackoverflow.com/questions/30731785/how-do-i-load-an-http-url-with-app-transport-security-enabled-in-ios-9


I have solved it with adding some key in info.plist. The steps I followed are:
  1. Opened my Projects info.plist file
  2. Added a Key called NSAppTransportSecurity as a Dictionary.
  3. Added a Subkey called NSAllowsArbitraryLoads as Boolean and set its value to YES as 

2016년 2월 24일 수요일

Vuforia CameraDevice 객체를 통한 이미지 복사

https://developer.vuforia.com/library//articles/Solution/How-To-Access-the-Camera-Image-in-Unity

의 내용을 참고하여 증강현실 카메라를 불러오려고 했으나

두가지 이슈로 다른 방법을 찾기로 함

1. In Unity 환경에서 픽셀포멧을 그레이스케일 밖에 지원안함, 테스트가 번거로움
2. QCAR 모듈을 활성화 하거나 비활성화 할 경우 정상적인 작동이 중지됨을 확인
(GetCameraImage 함수에서 계속 null을 리턴함)

이전의 화면캡쳐 형식으로 진행