INSTALL_PARSE_FAILED_MANIFEST_MALFORMED / 인텐트 필터 / android:exported

안드로이드 12 이상을 타겟팅하는 경우, android:export 설정을 꼭 해줘야 설치가 가능하다.

문제

  1. INSTALL_PARSE_FAILED_MANIFEST_MALFORMED
Installation did not succeed.
The application could not be installed: INSTALL_PARSE_FAILED_MANIFEST_MALFORMED

Installation failed due to: 'INSTALL_PARSE_FAILED_MANIFEST_MALFORMED: Failed parse during installPackageLI: /data/app/vmdl1345390280.tmp/base.apk (at Binary XML file line #32): com.nhn.android.naverlogin.ui.OAuthCustomTabActivity: 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

exported 설정을 해주지 않아 생기는 오류이다. 하지만 activity마다 android:exporte="true"를 잘 적용해 주었는데도 문제가 생긴다...
빌드는 정상적으로 진행되는데, install 하는 과정에서 위와 같은 오류가 뜨며 정상적으로 실행되지 않는다.
안드로이드 12 이하에서는 잘 작동되긴 하지만... 이 오류를 방치하면 Google Playstore에 App Bundle을 등록하면서 같은 문제가 생긴다.

  1. 인텐트 필터를 포함하되 android:exported 속성을 설정하지 않고 활동, 활동 별칭, 서비스 또는 broadcast receiver가 있는 APK 또는 Android App Bundle을 업로드했습니다. Android 12 이상에는 이 파일을 설치할 수 없습니다.

    또다시 android:exported를 설정해주라는 경고가 뜨면서 App Bundle이 업로드되지 않는다.

AndroidManifest.xml에서 하단의 Merged Manifest 창에 들어가면 아래와 같은 오류가 보인다.

Merging Errors: Error: android:exported needs to be explicitly specified for element <activity#com.nhn.android.naverlogin.ui.OAuthCustomTabActivity>. 
Apps targeting Android 12 and higher are required to specify an explicit value for `android:exported` when the corresponding component has an intent filter defined. 
See https://developer.android.com/guide/topics/manifest/activity-element#exported for details. 
(앱 이름) main manifest (this file), line 21

자세히 읽어보면 1번 문제도 그렇고, 해당 앱에서 사용한 네이버 로그인 library의 activity에 android:exported를 설정해주지 않아서 그런 것 같다.

<activity com.nhn.android.naverlogin.ui.OAuthCustomTabActivity>

가 들어가 있는 manifest 파일로 들어가 본다.


exported 설정이 들어가지 않았다.
수정을 해주고 싶은데, reader mode라 수정이 되지 않는다.
저 activity 부분을 복사해서 이걸 사용하는 앱의 manifest 파일에 복사해 넣고, android:exported="true"를 추가해준다.

이렇게 해주면 정상적으로 오류가 해결된다!

직접 만든 activity뿐만 아니라, 추가한 library의 activity에도 exported 설정을 해줘야 한다!
어떤 라이브러리가 문제인지 확인하고 따로 manifest 파일에 불러와서 추가해 주세요

좋은 웹페이지 즐겨찾기