네이버 소셜 로그인 구현중 다음과 같은 에러가 발생하였다.
문제사항
Manifest merger failed : android:exported needs to be explicitly specified for <activity>. 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.
Android12 버전 이상의 경우 manifest 파일에서 반드시 activity, service, receiver 값에 exported를 지정해주어야 한다.
(출처: https://developer.android.com/guide/topics/manifest/activity-element#exported)
<activity
android:name=".screen.login.LoginActivity"
android:exported="true">
그러나 현재 프로젝트에는 이미 exported 값이 지정되어있는데도 계속 오류가 발생하였다.
해결
manifest파일 밑의 Merged Manifest 를 눌러보면, 네이버 로그인 의존성을 추가하면서, 네이버 로그인에 사용하는 새롭게 추가된 (일반적인 text 상태에서는 보이지 않는) activity들이 존재한다.
<activity
android:name="com.nhn.android.naverlogin.ui.OAuthLoginActivity"
android:theme="@style/Theme.AppCompat.Light.Dialog" />
<activity
android:name="com.nhn.android.naverlogin.ui.OAuthLoginInAppBrowserActivity"
android:configChanges="orientation|screenSize"
android:label="OAuth2.0 In-app" />
<activity
android:name="com.nhn.android.naverlogin.ui.OAuthCustomTabActivity"
android:configChanges="orientation|screenSize"
android:launchMode="singleTask"
android:theme="@android:style/Theme.Translucent.NoTitleBar" >
해당 activity에서도 전부 exported 값을 지정해주어야 한다.
아마 추측하기로
Android12(SDK31) 버전이 공개가 된지 얼마 안된 버전이고, (공개일 2021년 10월 4일) 네이버 로그인 측에서 아직 SDK31에 대한 대응을 따로 해놓지 않은것으로 보이므로 수동으로 추가해서 해결했다.
또한 이번 기회로 다소 혼동하기 쉬운 sdk 개념에 대해 정리해보았다.
CompileSdk, TargetSdk, MinSdkVersion 비교
'Android > 트러블슈팅' 카테고리의 다른 글
Channel을 이용하여 팝업 메세지 구현하기 ( send & trySend ) (0) | 2022.04.13 |
---|---|
업적 기능 UI 구현 (0) | 2022.02.05 |