유니티에서 스크립트를 생성 후 비쥬얼 스튜디오로 열었을때 빨간 줄이 뜨면서 저런 에러 문구를 띄울 때가 있을겁니다.


이에 대한 원인은 컴파일러에 대한 오류가 가장 많은데 


대표적으로 전체 시스템 네임스페이스를 정의 하는 mscorlib.dll 를 프로젝트로 가져 오지 않은 경우에 발생한다고 합니다.


이걸 해결 하는 방법은 여러가지가 있으나 가장 쉬운 방법은 닷넷 프레임 워크를 다시 설치 하거나 비쥬얼 스튜디오 커뮤니티(설치 프로그램)


을 통해서 업데이트 혹은 재설치를 하는 것입니다.


다들 즐거운 코딩을 하시길 o//

작업 중에 "TypeLoadException: Could not load type 'UnityEngine.VR.VRSettings' from assembly 'Stores." 라는 메시지를 보게 되었다.(이 메시지는 logcat을 통해서 확인한 것이다.)


이 메시지가 끝 구간은 유니티 IAP를 통한 구글 인앱 결제의 해당 아이템 구매를 콜하는 부분에서 나온 것인데, 유니티 포럼을

이리저리 둘러보다보니 본인과 같은 일을 겪은 (서양)형들이 꽤나 많다는 것을 알게 되었다.


결론을 말하자면, 해당 유니티 프로젝트의 엔진 버전업을 하게 되면 로우 레벨단에서 처리하는 과정이 있는데, 그때 처리하는 과정에서

사용하는 플러그인(에셋)등에 문제가 있으면 그 작업이 제대로 안된다는 것이다. 그게 안되서 막상 IAP 플러그인을 넣고 실테스트를 하게 되면 IAP가 동작하는 도중에 저런 메시지를 띄운다는 것이다.


그러면 어떻게 해야하는가.


일단 프로젝트를 ReImport ALL을 해줘야한다.


참고로 이 작업을 하기 전에 프로젝트를 백업해두길 바란다.


자세하게 아는건 아니지만 메타데이터를 새로 작성하는 작업 같은데, 이 작업 도중에 잘못되서 프로젝트가 아작나면....


암튼 백업을 미리 해두고 Assets -> ReImport ALL 을 해주면 진행하다가 팝업이 하나 뜨게 될 것이다.


백업을 만들어 둔게 있냐 라는 식으로 경고 팝업이 뜰텐데, 우리는 이미 백업을 미리 해두었다. 진행하도록 하자.


싹 진행 후.


에러가 뜰 것이다.



이런 에러와 또 다른 추가 에러가 뜰 것인데, 이게 뜨는 이유는 위와 같이 불안정한 프로젝트 상태에서 IAP 플러그인을 임포트 후,

작업했다가 프로젝트 안정화 작업을 시행했을때 뜬다. 쉽게 말해서 네가 이전에 임포트 한 IAP 플러그인이 불안정한 상태이거나, 혹은 IAP 서비스가 오프라인이 되어 있거나 둘 중 하나이다. 물론 둘 다 일 수 있다.


본인은 일단 서비스를 재활성화 시킨 후, IAP 플러그인을 업데이트 하라는 것이 보여서 업데이트도 다 해주고, 혹시나 싶어서 ReImport 도 해주었다.


그리고 나서 APK를 만들어서 구글 콘솔을 통해 업로드 해주고, 구글 앱스토어에서 업뎃이 되길 기다렸다.


업데이트가 되고 나서 인앱 결제를 시도 해보니까. 문제없이 구글 결제 팝업이 뜨는걸 확인했다.


참고한 포럼 링크


https://forum.unity.com/threads/typeloadexception-could-not-load-type-unityengine-vr-vrsettings-from-assembly-stores.539915/

https://forum.unity.com/threads/could-not-load-type-unityengine-vr-vrsettings-from-assembly-stores.521484/

- https://answers.unity.com/questions/1320738/unity-iap-plugin-is-installed-but-unity-iap-is-dis.html

- https://answers.unity.com/questions/1131981/unhandled-exception-systemreflectionreflectiontype-1.html





게임 회사에서 구글 플레이 서비스와 애드몹을 같이 쓰는 경우가 일반적이다.


그런데 이 두 플러그인을 같이 넣고 apk 빌드를 돌리면 99퍼 확률로 터진다고 한다.


실제로 본인도 아무것도 모르고 돌렸다고 에러가 펑펑펑 터지는걸 보고 멘탈이 깨졌다.


- 터지면 나오는 에러 -




그래서 한 시간을 헤맨 결과. 해법을 찾았다.


해당 블로그(출처 : http://jinsdevlog.tistory.com/8) 에서 여러 원인 중 99퍼 확률로 한 가지 이유로 터진다고 언급 했다.


그것은 애드몹과 플레이 서비스의 gms 버전이 각기 다르기 때문이라는데, 이걸 해결하려면


아래의 파일들을 수정해주어야 한다고 한다.










본인의 당시 상황은 


유니티 2017.4.3

구글 플레이 서비스 플러그인 0.9.5

애드몹 3.15.0


이다.


위 두 파일을 열면 이렇게 보인다.


GooglePlayGamesPluginDependencise.xml



GoogleMobileAdsDependencise.xml



이전에는 두 파일에 공통되는 구문이 있었는 듯하다. 그러나 지금은 애드몹의 xml 파일에만 해당 구문이 있다.


그렇다면 문제는 해당 구문의 버전넘버에 문제가 있다는 것.


그래서 본인은 gms:play-services-ads: 뒤에 있는 숫자를 바꿔주었다. 위의 스샷의 넘버는 이미 바꿔준 상태이다.


바꾸기 전에는 15.0.1 이 였다.


바꾸고 저장한 후 asset->play service resolver -> android -> resolve를 클릭해주자.


그리고 play service resolver setting에서 auto resolve는 꺼주자.


혹시나 싶어서 아예 새로운 유니티 프로젝트를 하나 만들어서 이 두 플러그인을 넣고 apk를 만들어 봤는데,


위와 같은 에러는 나오지 않았다. 아마도 Plugins 폴더를 미리 생성해놨을시에 나타나는 문제 같은데,


만약에 이 두 플러그인을 사용할 계획이라면 미리 이 두 플러그인을 적용해놓고 나서 주 작업을 하는 것을 추천한다.

2012년도에 만들어진 프로젝트를 엔진 버전업 하는 작업을 받았는데, 


다행히 마지막 작업 날짜를 기준으로 작업한 엔진 버전으로 실행을 해서 프로젝트를 쉽게 열기는 했으나...


두 단계를 올리니까 이상한 버그가 발생 했다.


안드로이드 플랫폼으로는 이상없던 텍스쳐가 ios 플랫폼으로 바꾸니까 갈색으로 색이 깨져 버린 것.


  1. Failed to execute /Applications/Unity/Unity.app/Contents/Tools/PVRTexTool
  2. Failed to generate PVRT texture


라는 괴상한 에러가 떴는데 찾아보니까 ios에서 텍스쳐 압축 관련 기술 어쩌고 설명이 되어 있다.


그래서 이리저리 찾다가 유니티 이슈 팀이 3.5.6 단계에서 해당 이슈를 접수 받고나서

(https://forum.unity.com/threads/pvr-compression-failed.154597/


이후 3.5.7 버전에서 수정했다는 것을 확인 하게 되었다.


혹시 3.X 버전의 유니티 프로젝트를 엔진 버전업을 해야 하는 일을 맡게 되었을 때


이와 같은 에러가 발생하면 3.5.7 버전으로 엔진을 설치하여, 프로젝트를 열기를 바란다.




이번에 Unity 2017.1.0f3 버전을 설치하셔서 apk 파일 빌드 중에


이런 에러를 보셨을 분들이 꽤 될꺼라고 봅니다.


전 PC를 싹 밀어서 새로 설치를 해버리는 바람에 유니티 신버전을 받아 설치한 후에 이런 일을 겪게 되었는데요.


이 에러가 나타나는 원인은 이렇습니다.



위의 이미지처럼 키스토어와 키 세팅을 하고 나면 나오는 에러인데요.


Unity 2017.1.0f3 버전이 나온지 얼마 안되어서 아직 공식 패치는 나오지 않은 상황입니다.


해당 이미지의 원본 주소 : https://forum.unity3d.com/threads/unity-2017-1-android-build-error.482738/


유니티측에서는 이렇게 해답을 내주었는데... 공식 해결 패치는 금달(7월) 24일.... 유니티 개객기얄!!!!!!!


유니티 기술지원팀에서 알려준 링크를 따라가면...


해당 이미지의 원본 주소 : https://issuetracker.google.com/issues/62696222


sdk 빌드 툴의 문제라고 합니다...  근데 일자를 보면 6월 16일자... 이것들이!!!!!!!!


이걸 해결 하기 위해서는 안드로이드 스튜디오를 실행해서 SDK 매니저로 다운그레이드 패치를 해야한다는 말입니다.



안드로이드 스튜디오를 실행하여, SDK 매니저를 실행해줍니다.



붉은 사격형이 보이는 저 곳을 체크!



그러면 세부적으로 보일텐데 위 이미지처럼 붉은 사격형으로 표시된 곳과 동일한 곳을 체크!


그리고 나서 그대로 OK 버튼을 누르셔서 패치 받으시면 됩니다.


이후 다시 유니티로 돌아와서 APK 파일 빌드를 하시면 에러메시지 없이 빌드가 됩니다.


그럼 다들 즐거운 코딩을 하시길!!!



+ Recent posts