본문 바로가기

안드로이드/오류해결

[AOS] Targeting S+ ( export 선언 ) 에러 대응

반응형

안드로이드 TargetSdk31로 변경할 경우 권장되는 사항들이 있습니다. 

해당 포스팅에서는 export 선언시 발생했던 문제와 해결 방법을 다루며 자세한 사항은 공식 문서를 참고해주세요.

 

export 설정은 엑티비티나 서비스등에 설정해주는 값으로 AndroidManifest.xml에서 선언하며 엑티비티등이 외부 앱으로부터 호출을 허락하는 경우 true, 그렇지 않은 경우 false로 설정합니다. 

인텐트 필터의 경우 false로 설정하면 안되고 설정할 경우 해당 앱을 호출할경우 ActivityNotFoundException이 발생하니 주의 해주세요!

코드 

 <activity
                android:name=".clean.ui.activity.SearchActivity"
                android:exported="false" />

에러

사용중인 엑티비티와 서비스에 위와 같이 모두 선언해줬는데도 여전히 빌드시 에러는 발생했습니다. 

한번더 꼼꼼히 보고 비어있던곳에 추가했는데도 에러가 발생해, 외부 라이브러리 문제로 판단되어 어떤게 문젠지 파악해야 했습니다.

 

하나하나 찾긴 다 어려우니 AndroidManifest.xml 파일 선택후 하단에 보면 'Merged Manifest' 탭이 있는데 해당 탭을 보시면 어떤 라이브러리가 문제인지 알수 있습니다. 

저는 네이버로그인시 제공되는 엑티비티가 문제였고 아래처럼 제 AndroidManifest에 코드를 추가하여 문제를 해결했습니다.

        <activity android:name="com.nhn.android.naverlogin.ui.OAuthCustomTabActivity"
            android:exported="true"/>

 

매번 느끼지만 생각지 못한 곳에서 문제가 발생하는거 보면  새로운 Sdk 버전에대한 대응은 시간이 여유 있을때 미리미리 하는게 좋을것 같습니다.

 

 

 

 

반응형