[TIL] #19 Troubleshooting: Duplicate App Icon Issue

Yeon·2023년 8월 10일
0

내일배움캠프 - Kotlin

목록 보기
24/58
post-thumbnail

🚨 문제 발생!

개인과제에 개인적으로 스플래시 화면을 구현했다.
캐릭터는 LG Sakers의 꼬마챔비!

스플래시 화면이 깜찍해서 좋았는데 한가지 문제가 생겼다...😫
에뮬레이터의 앱 아이콘를 확인하니까 2개다ㅠㅜㅠㅜㅠㅠ
왜 이렇게 된걸까😂

우선 에뮬레이터에 설치된 앱을 삭제해보자!

설정에 들어가서 앱을 삭제하니까 2개 다 사라졌다.
하나만 삭제하고 싶었는데...

이건 에뮬레이터의 오류가 아니라 내 코드에 문제라는 것을 알아차렸다.


🔎 발생 이유

구글링을 해봐도 나같은 경우가 안보여서 ChatGPT한테 물어봤다.
그랬더니 아래처럼 답을 했다.

읽어보니까 나의 경우에는 2번에 해당되었다.
스플래시 액티비티를 추가한 후 AndroidManifest.xml에 런처 액티비티를 설정했는데 중복 설정을 한 것이었다.

아래는 내 코드의 일부이다.

<manifest
	...>
    
    <application
    	...>
        <activity
            android:name=".SplashActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        
        ...
        
        <activity
            android:name=".SignInActivity"
            android:exported="true"
            android:windowSoftInputMode="stateHidden">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
    	</activity>
        
    </application>

</manifest>

SplashActivitySignInActivity 두 개의 액티비티에 모두 런처 아이콘으로 설정되어 있다.
런처 아이콘으로 설정된 액티비티는 앱 아이콘으로 표시되므로, 두 개의 액티비티가 모두 설정되어 있으면 앱 아이콘이 2개가 표시될 수 있다.


💡 해결방법

그러면 스플래시 화면을 사용하면서 앱 아이콘은 1개만 표시되게 하려면 어떻게 해야 할까?
앱을 시작했을때 SplashActivity이 나오고 SignInActivity로 넘어가게 할거니까 SignInActivity<intent-filter> 부분을 제거하여 런처 아이콘이 중복되지 않도록 해야 한다.

<manifest
	...>
    
    <application
    	...>
        <activity
            android:name=".SplashActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        
        ...
        
        <activity
            android:name=".SignInActivity"
            android:exported="false"
            android:windowSoftInputMode="stateHidden" />
    
    </application>

</manifest>

SignInActivity에 있던 <intent-filter> 부분을 삭제하고
android:exported"true"에서 "false"로 수정했다.


👍 결과

수정이 끝난 후 다시 실행시켜보니 이제 앱 아이콘이 1개이고 스플래시 화면도 그대로 잘 작동된다!!!

1개의 댓글

comment-user-thumbnail
2023년 8월 10일

유익한 자료 감사합니다.

답글 달기