카테고리 보관물: Android

안드로이드 앱 업로드 시 손상된 기능 정책 위반 해결

개요

개발이 끝난 안드로이드 게임을 업로드 했습니다. 문제 없이 등록이 될 거라고 생각했는데 손상된 기능 정책 위반 문제가 발견되었다는 메일이 오고 거부되었습니다.

문제 파악

메일의 내용은 다음과 같았습니다.

발견된 문제: 손상된 기능 정책 위반
비정상 기능 정책을 준수하지 않는 콘텐츠가 포함되어 있습니다.

앱에 응답하지 않거나 콘텐츠를 반환하지 않는 아이콘 또는 버튼이 포함되어 있습니다.

참고로 영문 메시지는 App contains icon(s) or button(s) that are not responsive or do not return content. 입니다.

메일의 일부 내용

게임 상에 누를 수 있는 버튼은 세 개인데 계속 실행할 수 있는 버튼이 문제였던 것 같았습니다. 새로운 게임을 시작하고 그 후 계속 버튼을 활성화 하도록 작업 되어 있습니다. 처음에는 비활성화 되도록 설정되어 있었는데 그것이 문제였습니다.

문제 해결

버튼을 비활성화하고 사용 가능 할 때 다시 활성화 해 주는 것이 논리적인 흐름으로 보면 맞다고 생각했습니다. 그런데 구글 측에서 앱을 검사할 때 버튼으로 간주되는 것이 있으면 일단 눌려져야 하는 것 같았습니다. 버튼을 비활성화 하지 않고 계속 버튼을 클릭해도 새 게임을 시작한 것처럼 동작하도록 수정 후 업로드 했더니 해결되었습니다.

버튼이 있으면 무조건 누를 수 있게 하고 논리적인 흐름에 따른 비활성화는 메시지 같은 것을 보여줘서 처리하는 것이 앱이 거절되지 않고 등록되도록 하는 데 도움이 됩니다.

Unreal 5.4 안드로이드 aab 파일 생성 시 결제 라이브러리 제거

개요

Unreal 5.4 로 게임 개발을 마치고 Android aab 파일 생성 후 업로드 하면 결제 라이브러리 관련한 오류가 발생했습니다. 게임 내에 결제 요소가 없는데 기본적으로 결제 라이브러리가 사용되도록 되어 있어 발생한 것 같았습니다. 이 문제를 해결하는 방법을 알아보도록 하겠습니다.

오류 메시지

앱을 업로드 하면 다음과 같은 오류 메시지가 나타납니다.

앱에서 현재 Play 결제 라이브러리 AIDL 버전을 사용 중입니다. Google Play의 최신 수익 창출 기능을 사용하려면 5.2.1 버전 이상으로 업데이트해야 합니다.

실제 결제 기능이 있다면 버전을 업데이트 하는 작업을 진행해야 합니다. 필자가 제작한 게임에는 결제 기능이 없어서 처음에는 이상하다고 생각했습니다.

문제 파악

이리 저리 알아보니 인앱결제 사용 여부를 지정하도록 되어 있는 것 같았습니다. 그 값이 기본으로 사용하도록 되어 있는 것 같았습니다. 설정을 모두 찾아보았으나 인앱결제를 사용하는 여부를 선택하는 항목은 없었습니다.

C:\YourInstallPath\UE_5.4\Engine\Plugins\Online\Android\OnlineSubsystemGooglePlay\Source\OnlineSubsystemGooglePlay_UPL.xml 파일을 살펴보면 다음과 같은 내용이 있습니다.

<if condition="bSupportsInAppPurchasing">
...
</if>

이런 부분이 여러 곳에 있는데 조건에 따라 결제에 필요한 사항을 추가하는 것으로 생각되었습니다. bSupportsInAppPurchasing 이 항목의 값을 False 로 변경하면 문제가 해결될 것 같았습니다.

해결방법

YourProject\Config\Android\AndroidEngine.ini 파일을 수정합니다. 필자의 경우 없어서 생성했습니다. 파일의 내용을 다음과 같이 입력합니다.

[OnlineSubsystem]
DefaultPlatformService=GooglePlay

[OnlineSubsystemGooglePlay.Store]
bSupportsInAppPurchasing=False

bSupportsInAppPurchasing 항목을 False 로 지정하면 됩니다. 결제 기능을 사용한다면 True 로 설정해야 합니다. OnlineSubsystemGooglePlay_UPL.xml 파일 내의 bSupportsInAppPurchasing 항목과 일치하는 것을 알 수 있습니다.

다시 aab파일을 다시 업로드하면 오류가 사라집니다.