Android

[안드로이드 스튜디오] The application could not be installed: INSTALL_PARSE_FAILED_MANIFEST_MALFORMED 오류 처리 방법

구글플레이 정책변화

구글 정책이 또 한번 변화가 생겼다. targetSdkVersion이 너무 오래된 경우 더 이상 구글 플레이 스토어에서 앱이 사라진다. 앱을 계속 업데이트하려면 반드시 2023년 8월 31일까지 targetSdkVersion을 올려야한다. 오래전에 개발되고 계속 유지만 해오던 앱들이 있는데, 버전 상향 후 설치하는 과정에 오류가 발생하였다.



앱 설치 오류 내용

The application could not be installed: INSTALL_PARSE_FAILED_MANIFEST_MALFORMED

List of apks:
[0] '/Users/AndroidStudioProjects/프로젝트명/app/build/outputs/apk/debug/app-debug.apk'
Installation failed due to: 'Failed to commit install session 1668012421 with command package install-commit 1668012421. Error: INSTALL_PARSE_FAILED_MANIFEST_MALFORMED: Failed parse during installPackageLI: /data/app/vmdl1668012421.tmp/base.apk (at Binary XML file line #62): com.test.gogogo.IntroActivity: Targeting S+ (version 31 and above) requires that an explicit value for android:exported be defined when intent filters are present'
Retry
Failed to launch an application on all devices



오류 해결 하기

안드로이드 12(SDK API 31) 이상을 타겟팅하는 경우, android:export 설정을 명시적으로 반드시 해줘야 설치가 가능하다.

android:exported="true" 또는 android:exported="false"

AndroidManifest.xml 파일을 열고 확인해보니 android:exported=”false” 이미 설정이 되어 있는 상태이다.

        <activity
            android:name=".InfoActivity"
            android:exported="false"/>
        <activity
            android:name=".MainActivity"
            android:exported="false" />
        <activity
            android:name=".WebviewActivity"
            android:exported="false" />

자세히 보니 하나가 누락되어 있었다. 앱을 시작할 때 첫번째로 실행되는 activitiy인데, 이녀석 그러니까 intent-filter가 설정된 activity의 경우 반드시 android:exported=”true”로 설정을 해야 오류가 발생하지 않는다. android:exported=”false”로 설정하면 오류가 발생된다.

        <activity
            android:name=".IntroActivity"
            android:theme="@style/AppTheme.NoActionBar">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

오류 해결 후

        <activity
            android:name=".IntroActivity"
            android:exported="true"
            android:theme="@style/AppTheme.NoActionBar">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

Leave a Reply

error: Content is protected !!