상세 컨텐츠

본문 제목

[안드로이드] 빌드 후 앱 아이콘이 보이지 않는 현상 , 구글 플레이 스토어에서 열기 버튼이 보이지 않는 현상

Android 캐기

by Atlas 2024. 7. 29. 18:42

본문

728x90
반응형

시나리오: 빌드 후에 앱 아이콘이 보이지 않는 현상, 구글 플레이 스토어에서 앱을 설치했지만 열기 버튼이 보이지 않는 현상.

 

증상

카카오 채널 연동 작업을 하면서 테스트를 진행하는데 빌드 후에 앱 아이콘이 보이지 않는 기이한 현상을 경험했다. 내부 테스트로 업로드 후 다운로드 해봤지만 구글 플레이 스토어에서 설치는 했지만 열기 버튼이 보이지 않았다. 어플리케이션 탭에서 앱 검색 시에 찾을 수는 있었지만 사용할 수가 없는 상황. 

 

원인

원인은 intent-filter에 action의 중복이었다. 

 

  <activity
            android:name=".presentation.main.view.MaiActivity"
            android:exported="true"
            android:label="${appLabel}">
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <action android:name="android.intent.action.MAIN" />
                <data android:host="channel" android:scheme="kakao${kakaoKey}" />
            </intent-filter>
    </activity>

 

 

서로 다른 용도의 action이 하나의 intent-filter에서 선언되어 있는 것이 문제였다.  View와 Main의 경우는 별도의 <intent-filter>로 구분해서 선언하여 사용해야 한다. 

 

각 액션의 의미를 한번 정리해보면 ,

 

android.intent.action.MAIN: 이 액션은 애플리케이션의 진입점을 정의. 주로 앱의 런처 아이콘을 클릭할 때 호출되는 액티비티를 지정한다.

android.intent.action.VIEW: 이 액션은 URI를 통해 특정 데이터를 표시하거나 처리하는 용도로 사용. 주로 웹 링크나 딥 링크를 처리하는 데 사용된다.

 

두 개의 액션을 하나의 인텐트 필터에서 사용했을 때 생기는 문제점을 정리해 보면, 두 액션이 함께 사용되면, 어떤 상황에서 어떤 액션이 우선시 되어야 하는지 명확하지 않다. 예를 들어, 저자의 경우를 들면 앱을 런처에서 실행하는 액션이랑 딥 링크를 통해 실행하는 액션 중 어떤 액션을 해야 하는지 명확하게 처리할 수 없다. 이로 인해 인텐트가 잘못 처리되거나 예상치 못한 동작이 발생하는 것이다. 

android.intent.action.MAIN과 android.intent.action.VIEW가 함께 정의된 경우, 사용자가 앱 아이콘을 클릭했을 때와 딥 링크를 통해 앱을 열었을 때 동일한 액티비티가 호출되는데, 두 액션이 같은 인텐트 필터 내에 있으면, 이러한 상황을 구분하기 어려워 예상치 못한 동작이 발생할 수 있습니다.

 

즉, 명확하지 않은 인텐트 처리로 앱  실행시에 의도치 않은 동작이 발생하게 된 것이다. 

 

 

해결방법

<activity android:name=".MainActivity">
    <!-- 런처에서 실행될 때 -->
    <intent-filter>
        <action android:name="android.intent.action.MAIN"/>
        <category android:name="android.intent.category.LAUNCHER"/>
    </intent-filter>

    <!-- 딥 링크를 처리할 때 -->
    <intent-filter>
        <action android:name="android.intent.action.VIEW"/>
		<data android:host="channel" android:scheme="kakao${kakaoKey}" />
    </intent-filter>
</activity>

 

 

마무리

- ...😩

 

반응형

관련글 더보기

댓글 영역