[Unity3D] GooglePlayGameService 관련 오류




유니티로 만들고 있는 게임이 있는데 사실 1일차라고 하기엔 좀 많이 만들긴 했다. 만들던 중에 문득 생각해보니 사용하면서 알게 된 내용을 적는 게 훗날 도움이 될 것이라 생각해서 지금부터라도 포스팅하는게 좋겠다고 생각한다.


1. DllNotFoundException: gpg

날 가장 화나게 했던 오류. 평소처럼 안드로이드 스튜디오에서 logcat으로 돌려보고 있었는데 뜬금없이 구글 로그인이 안되면서 위의 에러 메세지가 발생했다. 아직도 원인을 정확히 모르겠지만 ndk 파일이 어떤 이유에서인지 변경이 됐거나, 맥 업데이트로 자바 관련 파일이 같이 업데이트 되면서 androidmanifest.xml 파일이 업데이트 되지 않아서 발생한 것 같은데, 아래와 같은 방법으로 해결했다.


  1. Google Play Games 플러그인을 reimport하거나, 아예 새로 다운받아서 import한다. 
  2. 유니티에서 windows -> Goggle Play Games -> Setup -> Android Setups... 에서 GPGids를 다시 만든다. 
  3. keystore의 암호를 입력한다.
  4. 유니티에서 assets -> Google Play Service -> android resolver -> forced resolver를 실행한다.



2. java lang exception ... class not found

정확한 에러 메세지가 기억이 안나는데, 일단 이 메세지와 함께 구글 로그인 연동이 제대로 안된다. 뭐 로그인이 실패가 됐거나 하는게 아니라 그냥 로그인 실행 자체가 안되는데, 안드로이드 스튜디오에서 SDK를 최신으로 업데이트 하니까 바로 된다. 구글 연동 코드에서 어떤 부분에 문제가 생긴 줄 알았는데, 외적인 문제였다. 되도록 SDK를 최신 버젼으로 유지해주자.



3. java keytool 설정

SHA1 서명에서 

  1. 터미널에서 keystore가 있는 위치로 이동
  2. keytool -list -v -keystore -user.keystore 입력
  3. 비밀번호 입력
  4. 인증서 복사 후 붙여넣기

2번이 제대로 안되서 고생했다. 



4. Unable to convert classes into dex format

딱히 gpgs 관련 오류는 아니지만, gpgs 플러그인을 설치할 때 종종 나오던 오류다. 파일 이름이 중복되거나, 파일이 중복되어 여러 개의 파일이 생성되었을 때, 가령

filename
filename 2
filename 3

이런 식으로 같은 내용을 가지면서 1, 2, 3 같이 뒤에 숫자가 붙게 될 경우 생기는 빌드 오류이다. 다 찾아서 지워줘도 되고, 플러그인 같은 걸 다운받았을 때 너무 많은 중복 파일이 생겼을 경우 그냥 플러그인을 지웠다가 다시 깔도록 하자.

댓글