INSTALL_PARSE_FAILED_MANIFEST_MALFORMED / 인텐트 필터 / android:exported
안드로이드 12 이상을 타겟팅하는 경우, android:export 설정을 꼭 해줘야 설치가 가능하다.
문제
- 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을 등록하면서 같은 문제가 생긴다.
- 인텐트 필터를 포함하되
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 파일에 불러와서 추가해 주세요
Author And Source
이 문제에 관하여(INSTALL_PARSE_FAILED_MANIFEST_MALFORMED / 인텐트 필터 / android:exported), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@kijrary/INSTALLPARSEFAILEDMANIFESTMALFORMED저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)