저번에 면접을 하나 보게 되었는데, 외부 SDK 연결한 경험에 대해서 여쭤보아서 연습해보기 위해서 Firebase를 사용해보게 되었다.
Firebase : "개발자가 서버(Back-end)를 직접 구축하지 않아도 앱/게임에 필요한 핵심 기능을 바로 쓸 수 있게 해주는 구글의 서비스 모음집"
역할: 유저의 점수, 아이템 목록, 설정값 등을 온라인에 저장합니다.
장점: 내가 DB 서버를 사고 언어를 배워서 구축할 필요가 없습니다. 그냥 SDK 함수 하나로 데이터를 넣고 뺄 수 있습니다.
역할: 구글 로그인, 페이스북 로그인, 이메일 가입 등을 구현합니다.
장점: 복잡한 보안 인증 과정을 거치지 않고도 클릭 몇 번으로 "내 게임에 구글 로그인 붙이기"가 가능해집니다.
역할: 유저가 게임을 얼마나 하는지, 어디서 죽는지, 어떤 아이템을 많이 사는지 통계를 봅니다.
장점: 구글 웹사이트에서 그래프로 내 게임의 현황을 한눈에 볼 수 있습니다.
역할: 내 게임이 유저 폰에서 튕겼을 때, "어느 코드 몇 번째 줄에서 에러가 났는지"를 나에게 보고해 줍니다.
장점: 내가 옆에 없어도 전 세계 유저들의 버그 리포트를 자동으로 수집합니다.
오늘은 이것 중 분석 및 로그 기능을 정리해보려고 한다.
외부 SDK 연동에 대해 알고 있는게 아무것도 없어서 Gemini에게 물어봤다.
그러니 학습 순서와 추천 SDK를 알려주었다.
| 단계 | 학습 내용 | 비고 |
|---|---|---|
| 1단계 | .unitypackage 임포트 및 초기화 | SDK 문서의 Initialize() 함수 호출 방법 숙지 |
| 2단계 | EDM4U 개념 파악 | Force Resolve 사용법 및 빌드 에러 해결 능력 |
| 3단계 | AndroidManifest & Info.plist 수정 | 권한(Permissions) 및 딥링크 설정 방법 |
| 4단계 | C# <-> Native 통신 (Bridge) | UnitySendMessage 및 네이티브 호출 API 학습 |
1단계 중 3가지를 알려주었다.
학습 포인트: .unitypackage 설치 및 Firebase 콘솔 연결 (google-services.json 설정)
EDM4U를 이용한 Android/iOS 종속성 해결 과정
비동기 프로그래밍 (Task, Coroutine) 기반의 SDK 호출 방식
장점: 문서화가 매우 잘 되어 있고, 무료로 시작할 수 있음.
학습 포인트:
유니티 에디터 내의 전용 설정 메뉴 활용
Android: AndroidManifest.xml에 앱 아이디 등록
iOS: Xcode 프로젝트 설정 자동화 및 프레임워크 추가
장점: 빌드 후 실행 시 네이티브 팝업이 뜨는 과정을 눈으로 직접 확인할 수 있음.
학습 포인트:
AndroidJavaObject를 이용한 Java 클래스 호출
DllImport("__Internal")를 이용한 iOS C-Bridge 이해
추천 검색어: GitHub에서 Unity Native Gallery 또는 Unity Native Share를 검색 (기기 갤러리에 접근하거나 공유 창을 띄우는 가벼운 SDK)
난 가난한 취준생이기 때문에 무료라는 문구를 피할 수 없었다. 사실 그거 아니어도 유니티 개발자라면 반드시 거쳐가는 관문이라는 말도 있었다.
| 프로젝트 만들기 |
|---|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
| 앱 등록 |
|---|
![]() |
![]() |
![]() |
| 패키지 이름 확인 |
|---|
![]() |
![]() |
| 앱 등록 |
|---|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
| 패키지 임포트 후, 뜨는 팝업 1 |
|---|
![]() |
| 패키지 임포트 후, 뜨는 팝업 2 |
|---|
![]() |
External Dependency Manager가 라이브러리 충돌을 자동으로 해결해 줄지 묻는 것
Enable을 선택하면 나중에 안드로이드 빌드할 때 복잡한 라이브러리 파일들을 유니티가 알아서 관리해 줌.
Unity에서 Window -> Firebase -> Documentation가 생겼으면 잘 설치된 것.
| Firebase 문서 |
|---|
![]() |
![]() |
| 테스트 코드 작성 |
|---|
![]() |
![]() |
![]() |
주석 보면 알겠지만 Gemini 형님이 짜주셨다.
이것도 나중에 더 공부해야겠다.
"앱이 켜지자마자 Firebase가 잘 작동하는지 확인하고, 통계 서버에 '앱 열림'과 '테스트 성공'알리는 코드"
빌드 하면서 대충 2일을 태워먹었지만, 여기서 정리하기는 힘들어서 다른 글로 정리하기로 했다.(버그 목록은 맨 밑에)
일단 간단한 Firebase 빌드는 SDK가 34버전 이어서 그것만 맞춰주면 된다.
만약 내가 사용하는 Unity버전이 낮아서 SDK 32버전으로 빌드 하고 있다면, 버전을 바꿔줘야 한다.
| 안드로이드 SDK 34버전 다운 받기 |
|---|
![]() |
![]() |
![]() |
![]() |
Edit -> Project Setting -> Player -> Other Setting에 사진과 같은 옵션이 있다.
| Target API 설정 |
|---|
![]() |
Edit -> Project Setting -> Player -> Publishing Setting -> Custom Gradle Properties Template를 체크하면
Assets 폴더 안에 Plugins\Android\gradleTemplate.properties라는 파일이 생긴다.
| gradleTemplate.properties 설정 |
|---|
![]() |
![]() |
gradleTemplate.properties에 android.suppressUnsupportedCompileSdk=34를 추가해 주면 된다.
| gradleTemplate.properties |
|---|
![]() |
해당 코드를 추가하면, API 34 버전으로 빌드를 허용한다는 뜻이다.
모든 설정 후, 빌드를 해보면 된다.
| 폰 화면 |
|---|
![]() |
| Firebase 콘솔 창 |
|---|
![]() |
| Realtime Analytics |
|---|
![]() |
| DebugView |
|---|
![]() |
위 작성한 테스트 코드를 보면 FirebaseAnalytics.LogEvent() 코드가 있는데, 해당 코드는 여기서 확인 할 수 있다.
다만 조금 준비가 필요하다.
휴대폰 설정 -> 휴대전화 정보 -> 소프트웨어 정보 -> 빌드 번호 연타하기
이렇게 하면 개발자 모드가 활성화 된다.
휴대폰 설정 -> 개발자 옵션 -> USB 디버깅 옵션을 켜준다.
그리고 컴퓨터와 연결.
모든 테스트가 끝난 후, 개발자 옵션을 종료 해주는게 좋다. 보안 문제 있음.
물론 내 폰은 보안 업데이트가 21년도 이후로 된 적이 없다.
cmd창에서 안드로이드 SDK의 명령어를 입력해 줘야한다.
환경변수를 등록해 두면 편하지만, 환경변수를 등록하려면 결국 경로를 알아야하기 때문에 경로를 파악해야한다.
더럽게 기네
난 C:\tool\SDK\platform-tools에 설치되어 있기 때문에 편하다.
이제 cmd를 켜서
adb shell setprop debug.firebase.analytics.app {패키지 네임}를 입력하면 된다.
| cmd |
|---|
![]() |
| 확인 |
|---|
![]() |
adb shell setprop debug.firebase.analytics.app .none. 를 cmd창에 입력하면 분석 종료.
| cmd |
|---|
![]() |
난 해당 프로젝트를 Jenkins로 빌드할 수 있게 해놨기 때문에 Jenkins로 빌드하면서 생긴 버그는 다른 글에서 정리하기로 하였다.
sdk 34버전으로 강제 변경 (해당 글에서 다룸)
Github 파일 크기 문제
1.2tls 문제
경로 길이 문제