Facebook이 설치된 Android에서 Facebook Login을 할 때 주의할 점

|

오늘 회사 게임의 크나큰 업데이트를 진행했다. 나는 그 중에서 ONE store와 관련된 전반적인 업무를 담당했다. 일단 기존에 서비스하던 Google Play/App Store의 Login System을 그대로 가져와야 해서 게임에서 제공하고 있는 Google 및 Facebook Login을 ONE store를 위해 바꾼 Package Name에 맞춰서 대응을 진행했다.

개발 과정에서는 순조로웠다. 여유가… 넘쳤지만 막상 출시를 하고나니 문제가 터졌다. 테스트 해보지 못한 곳에서 항상 문제가 터져나왔다. 여러 문제가 있었지만 내가 맡았던 업무 중 크게 걸린 것이 Facebook Login이었다.

어느 유저가 카페에 Facebook Login이 되지 않는다는 제보를 했다. 덩그러니 스크린샷만 있어서 나는 잠시 멍~ 하고 있었다. 혹시 Live APK에서는 안되는 문제였을까 싶어서 주변에 있는 기기들로 테스트를 진행했으나 정상적으로 로그인 되고 있었다. 그래서 큰 문제가 아닐 것이라고 생각했지만… 그 스크린샷에 나와있던 내용으로 검색해보니 보통 일이 아니었다. 바로 Facebook App이 기기에 깔려있는 모든 유저들은 Login을 할 수 없었던 것. 더 많은 피해자가 나오기 전에 빠른 수습이 필요했다. 처음엔 한글로 검색했다가 역시나 도움이 하나도 안되었다. 영어로 바꿔서 치자마자 바로 솔루션이 등장했다. 오오… 구글신 오오…

1. Unzip .apk file and extract META-INF\CERT.RSA file
2. In the Prompt, run: keytool -printcert -file CERT.RSA
3. notice SHA1 bytes are printed like 29:37:F1:CB:06…
4. copy SHA1 bytes into HEX to BASE64 converter (http://tomeko.net/online_tools/hex_to_base64.php)
5. see your BASE64 key hash in output field

내가 이전에 Facebook Developer Console에서 Key Hash를 등록할 때 Unity에서 생성한 Keystore를 가지고 keytool을 이용하여 뽑았는데, 그 값이 틀렸던 것이다. 아니 이게 왜 틀리지; 다행히 같은 Keystore로 Build한 APK의 Key Hash는 바뀌지 않는 것 같다.

2020/01/23 추가
보통 Facebook의 Android Key Hash 등록과 관련하여 아래와 같은 솔루션이 많다.
keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64
문제는 위의 솔루션이 Unity에서 생성한 Keystore로는 어째선지 적용이 되지 않는 것인데, 혹시 Android Studio에서 생성한 Keystore는 문제가 없는지 확인해봐야 하지만 테스트할 시간이 여의치는 않다. 뭐 그런데 대부분의 솔루션들에 대한 베이스는 Android Studio를 기반으로 하고 있기 때문에 문제가 없을 것 같다. Unity 이노오오오옴…

혀튼 APK를 다시 뽑아야 하는 상황이 아닌 것에 굉장한 감사를 느끼며 이거 하나 테스트를 생각 못했던 내 멍청함과 QA과정에서 아무도 Facebook App이 깔린 상태로 테스트를 시도하지 않았다는 사실에 경악하며… 대규모 업데이트 첫 날을 무사히(?) 마무리할 수 있을 것 같다.

까먹을까봐 부랴부랴 회사에서 빠르게 공유를 해본다. 그러고보니 이번에도 Facebook이 문제였네

2020년 계획

|

고통스러웠던 2019년이 지나고 2020년의 첫 주가 지났다. 연말부터 올해는 무엇을 할 지에 대해 여러 생각을 해왔는데, 올 연말에 다시 돌아보면서 내가 올해 목표를 얼마나 이뤘는지를 이 글을 통해서 따져볼(?) 생각이다.


1. 나 또는 게임 포켓 명의로 2개의 게임 출시

이건 장기 프로젝트로 생각하고 있는 것이기도 하다. 기존에 진행하고 있던 공주의 탄생을 시작으로 다른 하나의 게임까지 포함하여 올해 안에 2개의 게임을 출시하는 것이 목표다. 현재 회사에 다니고 있지만 회사 외적으로 내보고 싶다. 공주 이외에 만들고자 하는 작품은 내심 정해두긴 했다. 그래서 올해 2개를 내고, 내년에는 4개, 그 후년에는 6개(가능하면 8개)의 게임을 출시하고 그 다음 년도에는 매달 1개의 게임을 출시하면서 점점 홀로서기를 준비하고자 한다. 회사에서 게임을 만드는 것도 좋지만 이렇게 일을 하는 것이 나보다는 외적인 요인으로 인해 지속할 수 없는 경우가 많아서 이런 고민을 작년에 수도 없이 했었다. 그래서 조금씩 이렇게 나아가보고자 한다.

2. 퇴사하지(또는 당하지) 않기

1번에서 살짝 언급하긴 했지만 대한민국 게임계, 특히 중소 업체에서 오래 살아남기란 정말 쉽지 않다. 사람이 맞지 않아서 나가는 경우도 있겠지만 지금까지 가장 많이 겪었던 상황은 회사 사정으로 인해서 더 이상 일을 하지 못하는 경우가 대다수였다. 나도 첫 회사 이후로 한 번도 1년 이상 한 회사에 다녀본 적이 없기 때문에 올해야말로 이직…하기 싫다. 그래서 최대한 오래 이 회사에 있고 싶다.

3. NDC 또는 해외 컨퍼런스 가보기

NDC는 이전부터 한 번쯤은 가보고 싶은 개발 행사였는데 그동안 번번히 타이밍이 맞지 않아서 가보지는 못하고 이후의 자료들만 열람하는 수준이었다. 올해는 가서 최신 개발 트렌드는 어떤지 피부로 느끼고 싶었다. 그리고 작년에 추진했던 Unite Tokyo 2019 참석을 하지 못한 이후로 좀 많이 아쉬웠는데, 올해는 해외의 행사도 참석해보고 싶다. 가장 가능성 있는, 갈 수 있는 행사는 옆 나라 일본에서 하는 Unite Tokyo 정도니까 그걸 참석해보고 싶다. 올해 성공적으로(?) 참석하게 된다면 내년이나 후년에는 미국에서 하는 GDC같은 것도 생각해보고 있다.

4. 전기차로 기변(?)

작년에 차를 바꿔놓고 무슨 개소린가 싶겠지만 내 명의의 차가 아니더라도 가족차로 바꾸는 것도 포함한 말이다. 아버지의 차가 03년식 싼타페인데, 점점 강화되는 규제로 인해 더이상 운행이 힘들어지고 있다. 게다가 아버지 차가 4륜구동 모델인데, 매연저감장치 개발도 아직 하지 않고 있다고 한다. 그래서 유예 신청을 하여 올해까지는 과태료 부과가 이루어지진 않지만 매년 그런 고생을 할 수도 없는 노릇이다. 마침 아파트 주차장에 전기 충전 시설이 있어서 아버지 또한 긍정적으로 검토하고 있는 부분이다. 하지만 전기차가 생각보다 공부해야할 것도 많고 신경써야할 부분도 있어서 젊은 사람이 관리하는 것도 힘든데 아버지께서 신경쓰기는 쉽지 않을 것 같았다. 일단 다행이도 아버지께서 전기차로의 기변을 긍정적으로 생각하고 계시긴 하지만 아마 나의 차를 아버지께서 쓰고 내가 전기차를 쓰는 방향으로 흘러가지 않을까 싶기도 하다. 혀튼 그래서 돈을 좀 모아서 기변에 보탬이 되도록 할 생각이다.


일단 크게 4가지의 계획을 생각해보았다. 과연 12월에 정산할 때 위의 것들이 이루어질 수 있을 것인지는 좀 더 지켜봐야겠으나, 어떻게든 되지 않을까 싶다 ^^ 올해도 열심히 살아보자!

다른 Package 이름으로 같은 내용의 APK를 설치하기 (feat. Facebook)

|

어느 덧 이 회사에 입사한지 한 달이 지났다. 짧다면 짧고 길다면 길었을 이 시간에 업무를 보면서 마주했던 주요 이슈들에 대해 정리해보고 같은 어려움을 겪고 있는 사람들을 위해 공유할 수 있는 부분에 대해 공유하고자 한다.

회사 업무로 같은 컨텐츠의 APK지만 다른 Package Name(또는 Bundle ID)로 Build를 해야하는 경우가 생겨서 관련하여 작업하고 있었다. 지금까지 Unity에서 단순히 Package Name만 바꾸면 기기에서는 다른 App으로 인식하여 별도의 App으로 깔리는게 정석이었으나 이상하게도 우리 Project는 그러지 않았다. 처음에는 App Player(LDPlayer)의 문제로 생각했으나 그건 아니었고, 내가 알지 못하는 사이에 정책(또는 설정)이 바뀌었나 싶어서 각종 Unity의 설정을 뒤져보았으나 결국 알아내지 못하고 있었다.

그래서 일단 아예 새 Project를 만들어서 SampleScene만 있는 상태에서 Package Name만 바꿔서 Build하니 제대로 되었다. 일단 정책이나 설정에는 문제가 없는 것 같다. 설치할 때의 오류를 좀 더 자세히 보기 위해 Logcat을 열어보았다. 그런데 이걸 진즉에 했어야 했다. 바로 아래와 같이 자세히 나와있었기 때문이다.

W	1611	system	PackageManager	Package couldn't be installed in /data/app/com.EXAMPLE.PACKAGE.NAME
W	1611	system	PackageManager	com.android.server.pm.PackageManagerException: Can't install because provider name com.facebook.app.FacebookContentProvider1234567890 (in package com.EXAMPLE.PACKAGE.NAME) is already used by com.SAMPLE.PACKAGE.NAME

우리 게임에는 Facebook Login이 연동되어 있었는데, 하나의 Facebook App으로 여러 Package(라고 해봤자 2개)로 Login을 연동하고자 했다. 그런데 이쪽에서 탈이 난 것. 기존에는 두 Package를 동시에 설치한 적이 없기 때문에 발견하지 못했다. 해당 Keyword로 검색해보니 authorities를 Unique하게 두면 된다고 한다. 바로 변경 후 TEST!

        <!-- android:exported default value is true -->
        <provider
            android:name="com.facebook.FacebookContentProvider"
            android:exported="true"
            android:authorities="com.facebook.app.FacebookContentProvider1234567890.CHANGED" />

결과는 성공적이었다! 이거 하나 때문에 삽질한 것을 생각하면 부들부들 떨리지만 이 맛에 개발하는 것이 아닐까 싶기도…

결론: Log를 잘 보자.

2019년을 마무리 하며

|

어느덧 올해도 다 가버렸다. 이젠 서른살이라는게 낯설지 않게 되어 버려서 슬프다.

지난 1년 전처럼 이번에도 2019년을 마무리하는 포스팅을 해보고자 한다. 1월부터 12월까지 가장 기억에 남았던 것을 하나씩 꼽아서 되새겨보도록 하자.


1월, 이어지는 개발

12월의 정리를 쓰다가 말은 듯한 느낌이라 조금 이어서 써보자면, 저 때 좀 어려운 시기가 있었다. 그래서 퇴사를 고민을 했었는데… 멘탈을 어떻게든 붙잡고 1월에 이르른 것. 1월에는 그냥 아무 생각도 안하고 개발에만 집중했던 것 같다.

2월, 누나의 결혼

요즘도 출가외인이라는 말을 쓰는지는 모르겠지만, 그렇다. 4살 위의 유일한 형제자매였던 누나가 결혼을 했다. 내가 하진 않았지만 당일에는 나 조차도 정신이 없었다. 모든 것이 처음이라 힘들었다. 나는 과연 할 수 있을까 싶기도 ㅎㅎ… 행복했으면 좋겠다! 여담이지만 12월에 뽑은 벨로스터로 일련의 모든 이동을 책임지게 되었다.

3월, 삽질

개발 전반으로 삽질을 많이 했던 시기였다. 내외적으로 여러 고민을 했었다. 사실 그 외에는 무엇을 했는지 전혀 기억이 나지 않는다 (…)

4월, 감도는 전운

폭풍전야라고 했던가? 별 일 없이 무탈하게 지나갔던 것 같다.

5월, 더 뉴 아이오닉 하이브리드

지난 5개월동안 벨로스터를 타면서 유류비가 생각보다 많이 나왔다. 내년부터는 이자와 더불어 차값도 같이 내야하는 상황에서 점점 더 부담이 가중될 것 같았다. 그래서 빠른 기변을 했다. 결과적으로는 현재 만족하고 있다. 그러나 12월에 다시 위기가 왔었는데… 12월도 끝나가니 다행히도 무사히(?) 지나갈 것 같다.

6월, 퇴사

4월의 폭풍전야에 이어 5월에 터질 것이 터졌다. 그리고 일단 나서기로 했다.

7월, 생각보다 길어진 구직 기간, 그리고 재취업

대충 뒤 없이 나와서 좀 쉬었다. 근데 그 즈음에 업계 전반적으로 사정이 안좋아져서 금방 들어가기는 힘들었다. 한 달 반 정도 놀다가 결국 지인의 회사에 입사하게 되었는데…

8월, 고통의 리펙토링

첫날에 코드를 까봤을 때의 충격은 말로 표현할 수 없었다. 혼자서 대부분 만든 코드라는데 5명이 자기들 주장대로 만든듯한 코드가 위태위태하게 라이브 서비스를 하고 있는 것을 보고 참 여러 생각이 들었다. 그렇게 쓰레기 더미와 같은 코드를 뒤져가며 리펙토링과 최적화 작업을 진행했다.

9월, 얘기치 않은 퇴직

그렇게 이번 년도는 신나게 일복이 터질 것만 같았지만, 청천벽력과 같은 소식이 추석 연휴 전에 날아왔다. 회사를 정리한다는 한마디. 나는 왜 뽑혔을까 하는 의문과 원망은 이내 취업을 빨리 해야한다는 현실에 금새 잊어버리고 말았다. 그 소식을 듣고 추석 연휴에 추스른 후 바로 여기저기 넣어서 면접을 보았지만 급하게 넣은 건 역시나 제대로 되지 않았다. 그렇게 결국 퇴사일까지 다음 행선지를 정하지 못하게 되었다.

10월, 데스티니 가디언즈

이 게임은 내가 무슨 일이 있을 때마다 새로운 신작을 내놓는다. 그래서 했다. 취업 생각 1도 안하고 몰입했다. 차라리 몰입해서 놀아버리니 후련하긴 하더라.

11월, 사상 최장의 구직 기간, 그리고 재재취업

사실 11월 중순까지는 데스티니에 미쳐서 살고 있었다. 그러다가 나를 현실로 돌아오게 만든 건 바로 카드 통지서. 어서 취업해야겠다는 생각을 가지고 준비해서 몇 군데를 지원했다. 그 중 7월에 나를 불렀던 지인이 다시 들어간 다른 회사에 지원해서 최종 합격하게 되었다. 일단 한숨 돌린 셈.

12월, 숨고르기

그렇게 2일부터 새로운 직장에서 일을 시작했다. 나의 통산 6번째 정직원(…) 신분의 직장이다. 첫 주는 업무나 분위기 파악하느라 시간 가는 줄 몰랐다면 2주차부터 본격적인 일을 맡으면서 조금씩 업무를 해보면서 적응하고 있다. 지금까지 다녔던 회사들과는 분위기가 사뭇 달라서 아직은 적응되진 않는다. 그래도 다들 베테랑이라 배울 점이 많을 것 같다.


다 적지는 못했는데 올해 7월, 윈도우 노트북의 끝판왕을 하나 샀다. 이젠 노트북 사는 건 내 인생에 별로 특이점은 아닌 것 같이 느껴진다 (…) 어쨌든, 2018년 만큼이나 2019년도 굉장히 많은 일이 있었고, 정말 힘들었던 한 해였다. 내년은… 올해나 작년처럼 다이나믹한 일이 없이 평탄하게 흘러갔으면 좋겠다. 로또라도 되었으면 좋겠네 ㅠㅠ…

2020년에는 정말로 좋은 일만, 가득하길…!!!

여행

|

아마도 올해 마지막이 될 여행(…)을 지난 금요일에 다녀왔다. 겨울 바다도 보고 싶기도 하고 너무 집에만 있었으니 기분 전환도 할 겸 강릉 커피 거리로 발길을 옮겼다.

마침 당일에 건강 검진으로 휴가를 쓴 친구와 함께 친구의 검진 이후 픽업하여 점심을 먹고 강릉으로 떠났다. 자차로 약 3시간이 걸리는 짧지 않은 길. 강릉이 약 200km정도 떨어져 있지만 생각보다 오래 걸렸다. 그리고 그 날은 서쪽은 미세먼지가 심해서 돌아다니기는 좋지 않기도 했다. 그렇게 날씨에 대해 걱정하면서 갔지만 터널 몇 개를 지나고 거짓말처럼 푸른 하늘이 펼쳐져 있었다. 맑아진 하늘을 보고 있자니 어서 바다를 보고 싶어졌다. 목적지에 갈수록 지난 올림픽의 흔적들이 더러 보였다. 중간에 들렸던 휴게소에서도 수호랑과 반다비를 어렵지 않게 볼 수 있었다.

수호랑&반다비

오후 3시가 조금 넘어서 드디어 안목항에 도착했다. 올 7월 말에 이전 회사에 입사하기 전에 온 이후로 반년만에 왔지만 역시 달라진 건 없었다.

안목항 앞바다

아직 초겨울이었지만 바닷바람은 역시나 칼바람이었다. 너무 추워서 힘들었다 ㅎㅎ

끝없이 펼쳐진 바다를 보고 매서운 바닷 바람을 맞으며 잠시 모든 생각을 놓았다. 그리고 이내 생존 본능이 발동했다. 추워서 콧물도 줄줄 나기 시작하고 ㅎㅎ 그래서 창가쪽에 자리가 있는 카페를 찾아나섰다. 카페에 들어서서 주문을 하고 자리를 찾아보니 죄다 커플 아니면 은퇴하고 유유자적하는 듯한 분들이 더러 있었다. 평일이기도 하고 비수기(?)기도 하니까 딱 적당히 사람들이 있던 것 같다. 앉아서 바깥 풍경을 볼 새도 없이 벨이 울려서 가져왔다. 친구가 치즈 모양의 케이크를 추가 주문해서 같이 받아왔는데, 모양새가 정말 치즈같았고, 맛도 치즈였지만 속에는 빵이 들어있었다.

치즈케이크와 커피

친구와 세상 사는 이야기 하며 시간 가는 줄 모르고 떠들은 것 같다. 이날 저녁에 같이 간 친구와도 아는 친구와 함께 저녁을 먹기로 했기에 5시에는 자리에서 일어났다. 떠나면서도 뭔가 아쉽긴 했는데, 아쉬운 마음이 있어야 또 다시 오지 않을까 하며 서울로 향했다.

트립 정보

내일부터는 출근이다! 백수 생활이 끝나서 아쉬움도 남지만 그래도 본의 아니게(?) 실컷 놀아버린 만큼 열심히 일해볼 것이다…ㅎㅎ

마무으리