본문 바로가기

UE5

Unreal 5.5 Mobile Firebase Sdk

(사진을 찍어놨었는데 다 날림.........ㅜ....)

FireStore 를 사용해 로그인 및 데이터 관리를 하기 위해 Firebase Sdk 를 프로젝트에 추가해 사용 가능하도록 만들자.

 

먼저 Firebase 프로젝트를 생성한다. 

 

 

생성한 프로젝트에 생성한 SHA-1를 등록하여 google-services.json 파일을 반환 받고 이 파일을 프로젝트에 추가한다.

해당 파일은 Build 시에  apk 에 추가되며 사용하는 구글 서비스(firebase sdk) 와 관련한 코드들을 안드로이드에서 참조해서 사용할 수 있도록 해준다.

 

여기서 SHA-1 란? (Secure Hash Algorithm, 안전한 해시 알고리즘) 함수들은 암호학적 해시 함수

SHA-1 은 160비트의 16진수로 반환된다.

 

cmd 에서 아래와 같이 작성하여 특정 SHA 를 얻고 그 중 SHA-1 을 사용하여 프로젝트 생성 시 등록한다.

keytool -list -v -keystore %USERPROFILE%\.android\debug.keystore -alias androiddebugkey -storepass android -keypass android

 

그러면

 

 

요렇게 반환된다.

이걸 이제 프로젝트/Build/Android 디렉토리에 넣어주면 된다.

E:\Project\내 플젝!\Build\Android

 

 

다음으로 실제 코딩에서 사용할 Firebase Sdk 를 추가해야 한다.

다만, 여기서 몇 가지 선택지가 있는데

1. Firebase Sdk 를 깡으로 프로젝트에 넣고 아예 사용 혹은 설계하는 방식이 있다.

2. 이미 이러한 기능들을 편리하게 사용 가능하도록 ThirdParty 플러그인이 만들어져 있어서 그걸 구매해서 사용하는 방식이 있다.

 

그리고 나는....

 

GameDNA Firebase Plugin
firebase 관련 기능을 쉽게 사용 가능하도록 만들어진 플러그인 매우 좋다.
하지만 여기에서 제공하는 로그인 기능 만드는거는 유료라서 149달라.... 이거 안행

sdk 새로 받아서 처음부터 한다.

 

따라서 Firebase Sdk 를 받아서 ThirdParty 폴더를 만들어 추가해준다.

 

 

이제 Build.cs 파일로 들어가서 필요한 lib 를 추가해주자.

 

참고로 그냥 플러그인 혹은 여타 lib 추가 하듯하면 빌드 오류 난다.

아래처럼 일반적으로 추가하면 어떠한 오류가 계속 나오게 된다. 정확하게 이 상태에서 빌드는 된다. 근데 실제 이 lib 를 사용할 파일에서 include 하면 오류가 난다,

PublicIncludePaths.Add(Path.Combine(FirebasePath, "include"));
//if (Target.Platform == UnrealTargetPlatform.Android)
//{
    PublicAdditionalLibraries.Add(Path.Combine(FirebasePath, "libs/android/arm64-v8a/libfirebase_app.a"));
    PublicAdditionalLibraries.Add(Path.Combine(FirebasePath, "libs/android/arm64-v8a/libfirebase_auth.a"));
//}
PublicDefinitions.Add("INTERNAL_EXPERIMENTAL=0");

 

오류를 보면

"E:\UE_5.5\Engine\Build\BatchFiles\Build.bat MobileTPPEditor Win64 DebugGame -Project="E:\Project\내 플젝\MobileTPP.uproject" -WaitMutex -FromMsBuild -architecture=x64" 명령이 종료되었습니다(코드: 6).


MSB3073 = Build.bat 실행 도중 실패함
코드 6 = 보통 링커 실패 or 필수 파일 누락 ( 여기서 firebase lib 를 빌드 추가할때 문제가 있는것으로 유추 가능함 )

 

오류 이유 : 사실 확실하지는 않은데 오류를 고치긴 함. 그래서 유추 해보면 win64 에서 빌드해서 문제가 생긴듯하다. 다른 말로 안드로이드와 같이 빌드 가능한 플랫폼에서만 빌드 되도록 만들어주고 pc 에서 개발 중 일 때는 그냥 따로 #if 를 사용해서 다른 작업이 가능하도록 만들어야겠다.

 

 

 

pc 플랫폼에서도 firebase 를 사용 가능한 방식이 있다. pc >> 서버(api) >> firebase 와 같이 요청하면 pc 플랫폼에서도 firebase 사용 가능 할 거임.....( 할 줄 모름 )

 

여튼 그래서 코드를 고치면

PublicIncludePaths.Add(Path.Combine(FirebasePath, "include"));
if (Target.Platform == UnrealTargetPlatform.Android)
{
    PublicAdditionalLibraries.Add(Path.Combine(FirebasePath, "libs/android/arm64-v8a/libfirebase_app.a"));
    PublicAdditionalLibraries.Add(Path.Combine(FirebasePath, "libs/android/arm64-v8a/libfirebase_auth.a"));
}
PublicDefinitions.Add("INTERNAL_EXPERIMENTAL=0");

 

과 같이 이 프로젝트가 안드로이드에서만 사용될것이니까 안드로이드에서만 lib 를 사용하도록 만들고 실제 사용한다면

 

 

다음과 같이 #if 를 사용해서 예외처리를 해줄 생각이다.

 

이제 빌드 잘되고 나중에 로그인 기능 만들 때 지금 추가한 firebase Sdk 를 활용해서 구현 할 것.