Unreal 5.4 AdMob 연동 시 빌드 되지 않는 문제 해결

개요

Unreal 5.4 버전이 공개되고 해당 엔진으로 개발을 진행하고 있었습니다. 어느 정도 개발이 진행되고 광고를 포함하려고 AdMob 을 연동했습니다. 그러나 빌드를 하면 오류가 발생하면서 파일이 생성되지 않는 문제가 있었습니다.

오류

오류의 내용은 다음과 같습니다.

로그의 일부

UATHelper: Packaging (Android (ASTC)): Z:\app\src\main\java\com\epicgames\unreal\GameActivity.java:699: error: cannot find symbol
UATHelper: Packaging (Android (ASTC)): activityContext.runOnUiThread(new Runnable()
UATHelper: Packaging (Android (ASTC)): ^
UATHelper: Packaging (Android (ASTC)): symbol: method runOnUiThread()
UATHelper: Packaging (Android (ASTC)): location: variable activityContext of type ContextWrapper
UATHelper: Packaging (Android (ASTC)): Z:\app\src\main\java\com\epicgames\unreal\GameActivity.java:724: error: cannot find symbol
UATHelper: Packaging (Android (ASTC)): activityContext.runOnUiThread(new Runnable()
UATHelper: Packaging (Android (ASTC)): ^
UATHelper: Packaging (Android (ASTC)): symbol: method runOnUiThread()
UATHelper: Packaging (Android (ASTC)): location: variable activityContext of type ContextWrapper
UATHelper: Packaging (Android (ASTC)): Z:\app\src\main\java\com\epicgames\unreal\GameActivity.java:790: error: cannot find symbol
UATHelper: Packaging (Android (ASTC)): activityContext.runOnUiThread(new Runnable()
UATHelper: Packaging (Android (ASTC)): ^
UATHelper: Packaging (Android (ASTC)): symbol: method runOnUiThread()
UATHelper: Packaging (Android (ASTC)): location: variable activityContext of type ContextWrapper
UATHelper: Packaging (Android (ASTC)): Z:\app\src\main\java\com\epicgames\unreal\GameActivity.java:811: error: cannot find symbol
UATHelper: Packaging (Android (ASTC)): activityContext.runOnUiThread(new Runnable()
UATHelper: Packaging (Android (ASTC)): ^
UATHelper: Packaging (Android (ASTC)): symbol: method runOnUiThread()
UATHelper: Packaging (Android (ASTC)): location: variable activityContext of type ContextWrapper
UATHelper: Packaging (Android (ASTC)): Z:\app\src\main\java\com\epicgames\unreal\GameActivity.java:831: error: cannot find symbol
UATHelper: Packaging (Android (ASTC)): activityContext.runOnUiThread(new Runnable()
UATHelper: Packaging (Android (ASTC)): ^
UATHelper: Packaging (Android (ASTC)): symbol: method runOnUiThread()
UATHelper: Packaging (Android (ASTC)): location: variable activityContext of type ContextWrapper
UATHelper: Packaging (Android (ASTC)): Z:\app\src\main\java\com\epicgames\unreal\GameActivity.java:873: error: cannot find symbol
UATHelper: Packaging (Android (ASTC)): activityContext.runOnUiThread(new Runnable()
UATHelper: Packaging (Android (ASTC)): ^
UATHelper: Packaging (Android (ASTC)): symbol: method runOnUiThread()
UATHelper: Packaging (Android (ASTC)): location: variable activityContext of type ContextWrapper

YourProject.Target.cs 파일에 ExtraModuleNames.Add(“AndroidAdvertising”); 가 활성화 되어 있는 것이 원인이었습니다. 5.3 버전에서는 문제 없이 빌드 되고 광고가 나타났는데 5.4 버전에서는 그렇지 않았습니다.

오류 해결 시도

문제를 없애고자 다음과 같이 조치해 보았는데 해결되지 않았습니다.

  1. Android Target 변경 latest 에서 android-33 으로 변경해도 동일(원래 34)
  2. 프로젝트의 버전을 5.3 으로 변경해서 빌드하려고 했으나 소스코드내의 버전 번호가 일치하지 않고 Map(Level) 파일의 버전이 맞지 않는다는 메시지가 나타남. Map(Level) 파일이 나타나지 않음.

해결방법(아마도 임시)

근본적인 해결책인지 확신 할 수 없지만 필자가 개발 중인 프로젝트에서는 배너 광고가 제대로 나타나고 게임도 제대로 동작했습니다. 엔진 버전은 5.4.1 입니다.

  1. Android Studio 로 YourProject\Intermediate\Android\arm64\gradle\ 프로젝트를 엽니다. 경로는 개발 환경에 따라 다를 수 있습니다.
  2. YourProject\Intermediate\Android\arm64\gradle\app\src\main\java\com\epicgames\unreal\GameActivity.java 파일을 엽니다.
  3. 오류가 발생하는 activityContext.runOnUiThread 이 부분을 this.runOnUiThread 로 변경해서 Android Studio에서 빌드합니다.

이렇게 하면 광고가 정상적으로 나타나는 것을 확인할 수 있습니다. 같은 문제를 겪고 계신분들께 도움이 되었으면 합니다.

근본적인 해결책이 무엇인지는 알 수 없으나 엔진이 빨리 패치 되어 문제가 해결되었으면 좋겠습니다.

근본적인 해결책

빌드 할 때 마다 GameActivity.java 파일을 수정하는 것이 너무 불편해서 조금 더 파악해 보았습니다. 그 결과 위 오류 로그에 나타나는 내용이 포함되어 있는 파일을 찾아냈습니다.

C:\YourPath\Epic Games\UE_5.4\Engine\Source\Runtime\Advertising\Android\AndroidAdvertising\AndroidAdvertising_APL.xml 파일을 열어보면 오류가 발생한 내용과 같은 행이 있는 것을 알 수 있습니다.

Unreal 을 종료한 후 작업합니다. AndroidAdvertising_APL.xml 파일을 백업 하신 후 내용 중activityContext.runOnUiThread(new Runnable() 를 this.runOnUiThread(new Runnable() 로 변경하고 다시 시작한 후 Unreal에서 Package Project 를 수행하면 오류 없이 apk 파일이 생성됩니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

Time limit is exhausted. Please reload the CAPTCHA.