INSTALL_PARSE_FAILED_MANIFEST_MALFORMED / 인텐트 필터 / android:exported

김말이·2022년 3월 26일
1

안드로이드 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 파일에 불러와서 추가해 주세요

profile
공부해서 남주자

1개의 댓글

comment-user-thumbnail
2023년 8월 3일

저는 vscode를 쓰는데 어떤 라이브러리가 문제인지 알아낼 수 있는 방법이 있을까요?

답글 달기