IT/Android

안드로이드 앱 개발 중 아이콘이 갑자기 안보이는 경우

토마토조아 2022. 3. 25. 13:19
728x90

안드로이드 개발을 하다가 보면 갑자기 앱 아이콘이 사라지는 경우가 있다.

보통의 경우 intent-filter 를 설정 때문에 문제가 발생하게 된다.

특히 딥링크 개발하며 scheme이나 host를 매니페스트에 설정하다가 본 이슈가 발생하는 경우가 있으며 다음과 같이 해결할 수 있다.

문제 발생

        <activity
            android:name=".MainActivity"
            android:label="@string/app_name"
            android:theme="@style/Theme.NoActionBar"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
                <data android:scheme="@string/app_name" android:host="main" />
            </intent-filter>
        </activity>

문제 해결

        <activity
            android:name=".MainActivity"
            android:label="@string/app_name"
            android:theme="@style/Theme.NoActionBar"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            <intent-filter>
                <data android:scheme="@string/app_name" android:host="main" />
            </intent-filter>
        </activity>

 

여기서 핵심은 <data> 로 선언되는 intent-filter는 별도로 분리해야 한다는 것이다.

동일 intent-filter 에 넣는 경우 <data> 태그의 우선순위(?)가 높아 <action>, <category>가 무시되는 것으로 보인다.

실제 안드로이드 개발자 사이트에서도 다음과 같이 언급하고 있다.

두 인텐트 필터는 <data> 요소만 다릅니다. 동일한 필터에 여러 <data> 요소를 포함할 수 있지만, 고유한 URL(예: scheme 및 host의 특정 조합)을 선언하려는 경우 별도의 필터를 만드는 것이 중요합니다. 왜냐하면, 동일한 인텐트 필터의 여러 <data> 요소는 결합한 속성의 모든 변형을 고려하여 실제로 병합되기 때문입니다. 예를 들어, 다음 사항을 고려해 보세요.

 

728x90