카테고리 보관물: 개발

Android 15 대응 시 앱 화면이 겹치는 문제 해결

개요

구글의 정책에 따라 앱을 업데이트 하려면 최신 Android 출시로 부터 1년 이내여야 합니다. 기존 앱이 Android 14를 타겟팅하고 있었고 단순히 버전만 바꾸어서 확인해 보니 문제가 있었습니다. 이것을 해결하는 방법을 알아보도록 하겠습니다.

문제

Android 15 에뮬레이터에서 실행해 보면 크게 두 가지 문제가 있습니다. 하단 네비게이션 바가 광고를 덮는 문제, 앱 바가 가장 상단에 있지 않고 필드 하단에 나타나는 문제가 있습니다.

네비게이션 바가 하단 광고를 덮어버리는 문제
입력 항목이 앱바 아래가 아닌 위쪽에 나타나는 문제

해결

이것은 Android 15에서 추가된 Edge to Edge 와 관련된 문제입니다. 내용이 잘 정리되어 있으므로 앱 상황에 맞게 수정하시면 됩니다. 레이아웃이 완전히 깨지는 것을 처음 보면 많이 당황스러운데 차분히 잘 보면 어렵지 않게 해결하실 수 있으실 겁니다.

필자의 경우 다음과 같은 방법으로 해결했습니다.

첫 번째로 다음과 같이 레이아웃에 id를 추가했습니다.

<androidx.constraintlayout.widget.ConstraintLayout android:id="@+id/main_activity" ...

다음으로 소스 코드에 다음과 같은 코드를 onCreate 함수 setContentView 다음에 추가했습니다(java 기준).

ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main_activity), (v, insets) -> {
    Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
    v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
    return insets;
});

이렇게 하면 위에 언급한 두 가지 문제가 해결되어 정상적으로 보이는 것을 확인할 수 있습니다.

문제가 해결된 화면

Unreal Engine 특정 액터 충돌 무시하는 방법

개요

개발 중인 게임에 주기적으로 투사체를 플레이어에게 발사하는 적 캐릭터를 추가 했습니다. 적 자체와 플레이어의 충돌을 감지하기 위해 Capsule Component 가 포함되어 있었습니다. 여기에 투사체를 발사하도록 공격 방법을 추가했는데 둘 간의 간섭이 발생했습니다.

문제

적이 플레이어를 감지해서 투사체를 발사하기 전까지는 문제가 없었습니다. 투사체에 플레이어가 맞았을 경우의 처리를 위해 로직을 변경하다 보니 발생한 문제 였습니다. Collision Presets 관련한 부분을 조정해서 원하는 이벤트가 발생하도록 했습니다. 이렇게 하니 적과 적이 스스로 생성한 투사체가 서로 충돌하는 현상이 있었습니다. 이런 유형의 문제를 해결하는 방법을 알아보도록 하겠습니다.

Object Channels 항목 추가

Project Settings > Engine > Collision 선택해서 다음과 같이 Object Channels 항목을 추가합니다(EnemyProjectile).

Object Channels 항목 추가

Object Type 변경

다음과 같이 투사체 블루프린트의 Collision Presets 는 Custom, Object Type은 EnemyProjectile 로 설정합니다.

Object Type 설정

적 블루프린트에서 EnemyProjectile 무시 하도록 설정

투사체를 생성하는 적 블루프린트의 Collision Presets 는 Custom, Collision Responses > EnemyProjectile 항목은 Ignore 로 선택하면 됩니다. 이렇게 하면 투사체를 생성한 적과 투사체가 서로 충돌하지 않게 됩니다.

추가된 EnemyProjectile Ignore 설정