Unity3D/유니티 오류 해결

[유니티 GPGS 오류 해결] AndroidJavaException: java.lang.NoSuchMethodError: no non-static method with name='getStatusCode' signature='()I' in class Ljava.lang.Object;

상연 2021. 9. 15. 16:23

목차

    유니티에 구글 플레이 게임 서비스(GPGS)를 연동해서 Cloud Save / Load를 사용하기 위해

    관련된 함수를 활용하려고 했는데, 아래와 같은 에러메세지가 발생하면서 동작하지 않았다.

    AndroidJavaException: java.lang.NoSuchMethodError: no non-static method with name='getStatusCode' signature='()I' in class Ljava.lang.Object;

    그리고 문제 해결을 위해 검색을 해 본 결과, 나와 같은 문제를 갖은 사람들이 꽤나 많았는데

    https://github.com/playgameservices/play-games-plugin-for-unity/issues/3002

     

    AndroidJavaException: java.lang.NoSuchMethodError · Issue #3002 · playgameservices/play-games-plugin-for-unity

    When calling PlayGamesPlatform.Instance.LoadScores I am getting this error: AndroidJavaException: java.lang.NoSuchMethodError: no non-static method with name='getStatusCode' signature='...

    github.com

    대표적으로 이 문제에 관한 이슈글이다.

    글을 읽어보니 아마 자체적으로 GPGS 플러그인의 버그로 추정.

    그건 그거고 이슈가 활성화 된 것도 알겠는데, 생각보다 꽤 기간이 된 버그같았다.

    하지만 그럼에도 불구하고 딱히 마땅한 해결법으로 보이는 답변은 보이지가 않았다.

     

    위 글에서 찾을 수 있는 방법에서는 대표적으로 GetStatusCode를 못찾는것에서 발생하는 오류이므로 자체적으로 직접 코드를 작성해서 예외처리를 하는 방법을 주로 다루고 있는데

    사실 간단하다면 간단하고, 짜증난다면 짜증나는 그런 해결방법이있다.

    패키지 이름에 대문자가 들어가는지 확인하라.

    이게 무슨 소리인가 싶긴 하겠지만, 이게 직접적인 원인은 맞는듯하다.

    https://github.com/playgameservices/play-games-plugin-for-unity/issues/3066

     

    Play Games Plugin doesn't work if package name has capital letters · Issue #3066 · playgameservices/play-games-plugin-for-unit

    I have been trying to implement leaderboards to a game that's already been released on Google Play. After struggling for a week, I have found a comment about package naming, so I have renamed m...

    github.com

    https://github.com/playgameservices/play-games-plugin-for-unity/issues/3044

     

    ERROR: Authentication failed - java.util.concurrent.ExecutionException: 4 out of 4 underlying tasks failed · Issue #3044 · pla

    ERROR: Authentication failed - java.util.concurrent.ExecutionException: 4 out of 4 underlying tasks failed Most of devices are works perfectly, but some devices(Sony xperia xz1, Android version: 9(...

    github.com

    나 또한 이 문제를 해결하기 위해 여러 이슈를 최근것부터 역순으로 읽어나갔는데

    그러던 중, GPGS 문제를 해결하기위해서는 패키지에 대문자를 없애라는 것을 보게 되었다.

    그리고 놀랍게도 내 패키지에는 대문자가 포함이 되어있었다.

    상당히 문제의 원인으로 의심이 가는 상황이었던 것.

    하지만 패키지이름을 바꾼다는것은 꽤나 귀찮은 일이다.

    구글 콘솔에서는 이미 설정된 패키지 이름을 바꾸는 방법이 없기 때문에 새로운 앱 프로젝트를 열어야만했고, 기타 플러그인의 리소스코드부터 구글 플레이 게임 서비스 설정까지 다시 처음부터 해야하기 때문...

    그래도 어쩌겠나 싶어서 패키지 이름을 바꾸고 실행을 하자

    놀랍게도 바로 문제가 해결이 되고, 내가 원하던 대로 클라우드 저장이 가능하게 되었다.

     

    이 문제로 꽤나 스트레스 받았었는데 많은 분들에게 도움이 되었으면 좋겠다.

    나는 대문자를 소문자로 변경하는것 외에는 다른 방법을 크게 시도해보지 않았기 때문에 그 외의 해결법에 대해서는 알지 못한다.