본문 바로가기

프로그래밍/Unity

InvalidOperationException: 오류 해결

이번 롤매니저를 업데이트하면서 Google Play Game에서 클라우드 세이브를 추가하였다. 다만 그 과정에서 문제가 생겼는데, 게임이 크래쉬가 나는 문제였다. 이는 검색을 통해 유니티 업데이트로 해결했다는 이야기를 듣고 실제로 유니티를 2018 3.0.2 버전에서 3.1.2로 업데이트하자 사라졌다.

하지만 이후에는 구글 로그인이 되지 않았는데, 아래 로그가 계속해서 나타났다.

04-14 14:40:59.897: I/Unity(28131): Building GPG services, implicitly attempts silent auth
04-14 14:40:59.897: I/Unity(28131):  
04-14 14:40:59.897: I/Unity(28131): (Filename: ./Runtime/Export/Debug.bindings.h Line: 45)
04-14 14:41:00.019: E/Unity(28131): InvalidOperationException: There was an error creating a GameServices object. Check for log errors from GamesNativeSDK
04-14 14:41:00.019: E/Unity(28131):   at GooglePlayGames.Native.PInvoke.GameServicesBuilder.Build (GooglePlayGames.Native.PInvoke.PlatformConfiguration configRef) [0x0002a] in :0 
04-14 14:41:00.019: E/Unity(28131):   at GooglePlayGames.Native.NativeClient.InitializeGameServices () [0x000e9] in :0 
04-14 14:41:00.019: E/Unity(28131):   at GooglePlayGames.Native.NativeClient+<>c__DisplayClass22_0.b__0 (System.Int32 result) [0x00000] in :0 
04-14 14:41:00.019: E/Unity(28131):   at GooglePlayGames.Android.AndroidTokenClient+<>c__DisplayClass26_0.b__0 (UnityEngine.AndroidJavaObject tokenResult) [0x00067] in :0 
04-14 14:41:00.019: E/Unity(28131):   at GooglePlayGames.Android.AndroidTokenClient+ResultCallbackProxy.onResult (UnityEngine.AndroidJavaObject tokenResult) [0x00000] in :0 
04-14 14:41:00.019: E/Unity(28131):   at (wrapper managed-to-native) System.Reflection.MonoMethod.InternalInvoke(System.Reflection.Mo

구글링 해보니 SDK가 오래되어 그렇다는 이야기 뿐이었다. 안드로이드 SDK 업데이트 구글플레이 서비스 업데이트, 파이어베이스 업데이트 전부 했지만 여전히 같은 오류가 발생했다. 이 오류는 빌드세팅을 Gradle에서 Internal로 바꿔보라는 구글링을 통해서 해결되었지만 여전히 구글 로그인은 되지 않았다.

Exception launching token request: java.lang.ClassNotFoundException: com.google.games.bridge.TokenFragment 라는 새로운 오류가 나왔다. 이것도 구글링 해보니 여전히 비슷하게 SDK를 최신으로 해보라는 말 뿐이었다.

삼일동안 이 문제로 고생했는데, 해결방법은 인터넷에 있지도 않은 내용으로 알게되었다.

Player Settings > Publishing Settings에 보면 Use Legacy SDK tools가 있는데 이걸 껐더니 해결 되었다. 최신 SDK에 관한 문제가 맞긴 했다고 생각이 되는데, 이 옵션을 끄고도 Gradle 모드로는 계속해서 문제가 나왔다. 코드가 문제가 아니라 빌드나 툴관련 문제는 자세히 알기 어렵기 때문에 일단 이대로 진행하려 한다.