Unreal 안드로이드 패키징 시 필요 없는 권한 제거하기

개요

게임 개발 후 안드로이드 기기를 대상으로 패키징 후 실행해 보면 처음에 여러가지 권한을 요구하는 경우가 있습니다. 분명 게임과는 무관한 것인데 필요 이상으로 많은 항목을 요청합니다.

그 이유는 몇 가지 권한이 기본적으로 부여되어 있어 발생한 것 입니다. 꼭 필요한 항목만 포함하는 방법을 알아보도록 하겠습니다.

중간 파일 내용 확인

Intermediate\Android\arm64\AndroidManifest.xml 파일 내용 일부를 보면 다음과 같이 게임에 필요 없는 권한이 들어 있습니다(arm64 폴더는 대상 플랫폼에 따라 달라질 수 있습니다).

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="com.android.vending.CHECK_LICENSE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

이것을 꼭 필요한 권한 WRITE_EXTERNAL_STORAGE, READ_EXTERNAL_STORAGE 만 포함하도록 변경해 보겠습니다.

ManifestRequirementsOverride.txt 파일

이곳에서 안드로이드 패키지 설정에 대한 설명을 볼 수 있습니다. 그 중 Extra Permissions 항목을 보면 <Project>/Build/Android/ManifestRequirementsOverride.txt 항목에 대한 설명이 있습니다. ManifestRequirementsOverride.txt 파일의 내용으로 대치 된다는 내용입니다.

Extra Permissions 항목에 마우스 커서를 올려보면 나타나는 설명

꼭 필요한 권한만 추가해서 깔끔하게 관리할 수 있습니다. 단순 텍스트 파일이며 필요한 권한을 다음과 같은 형식으로 추가해 주기만 하면 됩니다.

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

이렇게 하면 두 가지 권한만 AndroidManifest.xml 파일에 추가됩니다. 이런 방법으로 필요 없는 권한은 제외하고 꼭 필요한 항목만 추가할 수 있습니다.

Unreal 안드로이드 모바일 기기에서 Emissive Color 적용되지 않는 문제 해결

개요

게임 내에 있는 물체의 모양을 보기 좋도록 여러가지 효과를 적용할 수 있습니다. Material 내에서 Emissive Color 가 적용되도록 하면 물체가 빛나는 효과(Glow)를 표현할 수 있습니다.

모바일 게임의 경우 성능이 좋은 기기에서는 정상적으로 표시됩니다. 그러나 낮은 성능을 가진 기기에서 빛나는 효과가 전혀 나타나지 않는 경우가 있습니다. 이 경우 어떻게 해결하는지 알아보도록 하겠습니다.

설정확인

일단 모바일 기기에서 Glow 효과를 나타나게 하는 설정이 선택되어 있는지 확인합니다.

Project Settings > Engine > Rendering > VR > Mobile HDR 체크

Project Settings > Engine > Rendering > Default Settings > Bloom 체크

설정 확인

디바이스 프로파일(Device Profile)

Unreal 에서는 기기별로 설정을 지정할 수 있습니다. 이 기능을 이용해서 성능이 낮은 기기에서도 Glow 효과가 나타나도록 할 수 있습니다. 디바이스 프로파일 설정에 대한 자세한 내용은 이곳을 참고하시면 됩니다.

Config\DefaultDeviceProfiles.ini 파일을 추가해서 설정할 수 있습니다. D:\your_unreal_engine_path\UE_5.3\Engine\Config\BaseDeviceProfiles.ini 파일 복사 후 DefaultDeviceProfiles.ini 로 이름 변경해서 추가합니다.

파일을 열어보면 내용이 많은데

[Android_Low DeviceProfile]
[Android_Mid DeviceProfile]
[Android_High DeviceProfile]

섹션에 +CVars=r.BloomQuality=1 을 추가한 후 저장합니다.

[Android_Low DeviceProfile]
DeviceType=Android
BaseProfileName=Android
+CVars=r.MobileContentScaleFactor=0.8
; Scalability groups, see AndroidScalability.ini
+CVars=sg.ViewDistanceQuality=0
+CVars=sg.AntiAliasingQuality=0
+CVars=sg.ShadowQuality=0
+CVars=sg.GlobalIlluminationQuality=0
+CVars=sg.ReflectionQuality=0
+CVars=sg.PostProcessQuality=0
+CVars=sg.TextureQuality=0
+CVars=sg.EffectsQuality=0
+CVars=sg.FoliageQuality=0
+CVars=r.BloomQuality=1

[Android_Mid DeviceProfile]
DeviceType=Android
BaseProfileName=Android
+CVars=r.MobileContentScaleFactor=1.0
+CVars=sg.ViewDistanceQuality=1
+CVars=sg.AntiAliasingQuality=1
+CVars=sg.ShadowQuality=1
+CVars=sg.GlobalIlluminationQuality=1
+CVars=sg.ReflectionQuality=1
+CVars=sg.PostProcessQuality=1
+CVars=sg.TextureQuality=1
+CVars=sg.EffectsQuality=1
+CVars=sg.FoliageQuality=1
+CVars=r.BloomQuality=1

[Android_High DeviceProfile]
DeviceType=Android
BaseProfileName=Android
+CVars=sg.ViewDistanceQuality=2
+CVars=sg.AntiAliasingQuality=2
+CVars=sg.ShadowQuality=2
+CVars=sg.GlobalIlluminationQuality=2
+CVars=sg.ReflectionQuality=2
+CVars=sg.PostProcessQuality=2
+CVars=sg.TextureQuality=2
+CVars=sg.EffectsQuality=2
+CVars=sg.FoliageQuality=2
+CVars=r.MobileContentScaleFactor=1.0
+CVars=r.BloomQuality=1

다시 패키징 후 안드로이드 모바일 기기에서 확인해 보면 Glow 효과가 나타나는 것을 확인할 수 있습니다.

안드로이드 기기에서 Glow 효과가 적용된 상태