본문 바로가기
유니티5 독학 & 게임 제작

유니티5 독학하기 그7번째 걸음-엄청난 숫자의 에러와 천신만고 끝의 해결

by 인터넷떠돌이 2017. 5. 26.
반응형

안녕하세요?


지난번 6번째 걸음에서 [실전! 유니티5로 소셜 네트워크 게임 만들기]라는 책의 챕터5를 독학하고 있는데, 마음같아서는 이번 포스팅에서 챕터5를 다 끝내고 싶었지만, 실습을 해보니까 너무나 많은 예측불허의 에러가 튀어 나와서 어째 2/3만 완수할 수 밖에 없었습니다. 아무튼 포스팅을 시작합니다.



먼저 유니티5에서 Android App의 Package Name를 알아내기 위한 작업에 들어가기 위해서, 유니티5의 Edit 메뉴에서 있는 Project Settings항목으로 가서 Player란에 가서 이를 확인해 보도록 합니다. 



여기서 부터 첫번째 돌발상황이 벌어졌습니다. 저는 분명히 Bundle Identifier라는 항목이 위 스크린샷에 보이는 Inspector 윈도우에 있던 Other Settings에 있을 것으로 기대했습니다. 책에서는 Bundle Identifier라는 항목이 없어서 많이 당황했습니다.



그래서 일단 모르고 한번 빌드를 실행해 보았습니다만, 결국 제대로 뭐가 되지도 못하고, 중간에 형식이 잘못되었다는 에러 메세지가 뜨기만 하였습니다.



결국 한참을 고민해서야 겨우 알아차린 것이, Bundle Identifier라는 것이 위 스크린샷에서 붉은 밑줄로 그어놓은 부분이 바로 AnroidPackage Name이라는 부분입니다. 그리고 이걸 그대로 복사해서 붙여넣기를 하는 것이 아니라, 일일이 지정을 해줘야 하는 부분인 것을 겨우 알아차렸습니다.


com.netpilgrim.shootergame


여기서 com은 배포목적, netpilgrim은 회사명이라는데, 저는 개인이 독학하고 있으니 제 아이디를 집어넣고, shootergame라는 것은 게임의 이름입니다. 이런식으로 형식을 맞추어서 입력을 하면 되는데, 주의할 점은 영어보다 숫자가 나온다거나 _ 를 제외한 특수문자는 오작동을 유발 할 수 있다고 책에서 언급을 하고 있습니다.



다음은 이전 포스팅에서 페이스북에서 요구하였는 클래스 이름을 알아보러 가는 길입니다. 먼저 인터넷에 접속해서 prime[31]의 홈페이지로 들어가서 위 스크린샷에 나와 있는 것처럼 Documentation을 클릭하도록 합니다. 



위 스크린샷에 보이는 것처럼 prime31의 플러그인 중에서 소셜 네트워크 플러그인을 선택한 다음, 문서에서 classname이라고 검색을 해서 붉은색으로 강조가 되어 있는 부분을 찾도록 합니다. 왜냐하면 책에서 언급하기를 이 클래스 이름이라고 하는 것이, 유니티로 빌드될 게임의 어느 액티비티가 소셜 네트워크와 연결을 담당하는 지를 결정하는데, 당연 이 기능을 prime[31]에게 맡겼기 때문에, 이에 제작자의 홈페이지를 찾아가서 알아보아야 합니다.



지금까지 알아낸 정보를 임의의 메모장에 미리미리 저장을 하도록 합니다. 왜냐하면 언제까지고 이 화면들을 켜둔채로 실습을 진행 할 수는 없었기 때문입니다.


마지막으로 남은게 키 해시라는 값인데, 지금부터 미리 말하는 것이지만, 이 작업이 가장 오래 걸리고 힘이 많이 들었습니다. 아무튼 가장 먼저 준비해야 하는 것이 Java SE Development Kit가 필요합니다. 제 경우는 직접 자바 홈페이지를 방문했습니다.



일단 책에서 언급을 하기를 작업환경이 되는 PC의 운영체제와는 상관이 없이, 윈도우용 x86, 32비트짜리 Java SDK를 다운로드 받을 것을 지시하고 있습니다. 일단 이걸 다운로드 받아서 설치하도록 합니다.



이제 다시 유니티5로 돌아가서, 좀 전에 띄워놓은 Player Settings로 갑니다. 이번에는 Publishing Settings항목으로 가서, 위 스크린샷에 보이는 것 처럼 Create a new keystore를 선택하도록 합니다.



먼저 위 스크린샷에 보이는 것 처럼, Keystore password를 여기서는 실습이기도 해서 그냥 책에서 나와 있는 것과 똑같이 android라고 지정을 합니다. 그리고 위 스크린샷의 왼편에 있는 화면은 아래에 있는 Key란에 Alias를 create a new one을 선택하면 뜨는데, Alias에다가 testapp이라고 지정을 합니다.



그리고 패스워드란에서는 좀전에 Inspector 윈도우에서 지정한 android를 입력하도록 합니다. 제 경우에는 여기서 타이핑이 계속 실수가 났는지, 여러번 시도 끝에 겨우 Key를 생성할 수 있었습니다. 이것으로 키 스토어라고 해서 keystore가 생성이 되는데, 제가 자주 했는 실수가 이 keystore를 keystone이로 자꾸 오타를 내는 실수를 좀 하였습니다. 여러분은 설마 하지만, 아무튼 조심해 주셨으면 합니다.



다음은 키 해시-해시키를 얻기위해 먼저 OpenSSL을 다운로드 받아야 합니다. 이 프로그램이 있어야 해시키를 얻을 수 있다고 하는데, 일단 제 경우에는 구글에서 openssl sourceforge라고 검색을 해서 들어간 곳에서 위 스크린샷의 붉은색 동그라미가 쳐진 곳을 눌러 설치를 하였습니다.



일단 설치 자체는 순조로웠습니다. 여기까지는 크게 문제가 없어 보였습니다만, 아무튼 앞으로 일어날 좌우충돌을 이 시점에선 전혀 예상도 하지 못했습니다.



먼저 openSSL이 설치된 경로를 찾도록 합니다. 제 경우에는 C드라이브의 Program Files (x86)폴더 안에 있는 GnuWin32안에 들어가서 bin안에 있는 것을 확인할 수 있었습니다. 이 과정을 거치는 이유는, 이제부터 해시키를 얻는 과정은 cmd라고 도스 환경에서 이루어 지는데, 일일히 OpenSSL이 들어가 있는 경로를 찾아 들어가려고 하면 귀찮기 때문에 이 작업을 하는 것입니다.



다음은 제어판을 열어서 시스템 메뉴를 실행합니다. 그리고 시스템안에 있는 [고급 시스템 설정]을 클릭해서 위 스크린샷과 같은 화면을 띄우도록 합니다. 거기서 환경변수를 누르도록 합니다.



그러면 환경변수에 있는 시스템 변수 편집에서 세미콜론 ; 를 기준으로 OpenSSL이 있는 경로를 붙여넣기 해 줍니다. 이렇게 하면 cmd상에서 OpenSSL이 있는 경로까지 직접 들어가지 않고도 언제든지 OpenSSL을 실행할 수 있습니다.



제대로 작동되는 것을 확인한 다음, 이제 다음 과정으로 넘어 가도록 합니다.



다음이 중요한데, 일단 배치파일을 만들기 위해서 위 스크린샷과 같이 타이핑을 합니다. 그런데 첫번째 붉은색 화살표에 있는 것은 좀 전에 유니티5에서 지정한 alias이름인 testapp을 입력하면 되고, -keystone이라는 항목 뒤에는 좀전에 유니티5에서 만들어 놓은 키스토어가 저장된 폴더명까지 집어넣어서 키스토어파일(.keystore)자체를 지정하는 장면입니다. 이후는 언제나 지정된 형식만을 따르는데.........


keytool -exportcert -alias [키스토어 생성시 지정한 alias 이름] -keystore [유니티5에서 키스토어가 있는 경로와 파일명까지 포함한 경로] | openssl sha1 -binary | openssl base64


이렇게 입력을 한 다음에, 아래에 pause를 두어서 멈추는 기능까지 두도록 합니다. 이제 메모장을 그냥 txt형식으로 저장하지 말고, 모든파일 형식으로 한 다음 지정하고 싶은 이름.bat 라고 해서 배치파일을 만들고 실행을 시키면됩니다.



제 경우에는 해시키를 생성한다고 책에서 나와있는 예제와 같이 hash.bat라고 지정을 하고서 한번 작업을 해 보았습니다. 그런데, 작업이 안되고 계속 종료만 되길래, 하는 수 없이 cmd에서 일일히 입력해서 한번 실행을 시켜 보았습니다.



첫번째 난관에 봉착한 순간입니다. 어찌된 것인지 keytool이라는 것을 인식하지 못하고 있습니다. 저는 이 문제가 왜 일어나는지 몰라서 구글링을 한참이나 했고, 겨우 해결책을 알 수 있었습니다.



일단 이게 ProgramFiles안에 있는 Java에 있는 파일인데, 경로는 위 스크린샷에 나와있는 것과 같습니다. 즉, 이것도 일일히 여기 경로를 cmd상에서 찾아와서 실행을 하든가, 아니면 [제어판]-[시스템]-[고급 시스템 설정]-[환경변수]에서 경로를 지정해 줄 필요가 있습니다.



이제 난관 2번째에 봉착했습니다! 이번에는 openssl.cnf라는 것이 문제라는데, 무슨소리인가 하면 처음에는 몰랐는데 구글링을 해서 알아보니, Openssl이 config파일인 openssl.cnf라는 파일을 찾을 수 없어서 발생하는 문제라고 합니다. 저도 해결책을 몰라서 한참을 헤멘끝에 겨우 해결책을 발견하는 데 성공하였습니다.



일단 제대로 해결책을 모를때 했는 것이지만, 중요할 수도 있어서 포스팅에서 언급을 하고 넘어가도록 하겠습니다. 제 경우에는 먼저 OpenSSL을 다운로드 받은 곳에서 아래에 있는 Sources를 다운로드 받아서 설치를 하고, 파일 탐색기에서 다음과 같은 탐색을 하였습니다.



GnuWin32에서 .cnf만 검색을 하자 위 스크린샷과 같은 결과가 나오는 것을 볼 수 있었습니다. 이제 cmd를 실행시키고 다음과 같은 구문을 입력하도록 합니다.



set OPENSSL_CONF=경로


여기서 경로라는 것은 openssl.cnf가 있는 폴더와 파일까지 다 포함해서 있는 경로입니다. 이 명령어의 의미는 openssl.cnf는 뒤에 있는 경로에 있으니 찾아가서 인식하라는 의미가 됩니다.



하지만 여전히 배치파일은 실행이 되지않아서 하는 수 없이 cmd에서 일일히 수작업으로 입력을 해야만 했습니다. 그래도 효과를 보기는 봤는지 이전에는 없는 키 저장소 비밀번호-아마도 키스토어의 비밀번호를 의미하는 듯 합니다. 아무튼 위에서 지정을 하였는 android를 이번에 입력하도록 합니다.



그러자 이번에는 해시키로 보이는 의미불명의 문자열이 나타나는 것을 볼 수 있었습니다. 조금은 귀찮기는 하지만, 이건 복사하기 붙여넣기가 안되기 때문에 일일히 타이핑을 해서 메모장에 옮기도록 합니다.



이제 해시키까지 얻는데 성공하였습니다. 아무래도 다음 포스팅에서 드디어 챕터5를 완료할 수 있으리라 생각은 되지만, 듣자니 OpenSSL이 잘못되어서 해시키를 제대로 된 값을 못 가져오는 경우도 있다고 합니다. 이런 경우가 되면 다음 실습이 완전 엉망이 되지만..... 그 때는 또 그 때가서 해결책을 찾아 돌파해야 겠다는 생각이 듭니다. 페이스북 연동하나 하자니 완전 얼굴이 평면 페이스가 될 지경입니다.

반응형