카카오 지도 API를 연동하면서 아래와 같은 에러로 화면이 제대로 출력되지 않는 문제가 발생
AndroidManifest <application> 속성에 usesCleartextTraffic을 true로 설정해주면 해결된다.
android:usesCleartextTraffic
앱이 일반 텍스트 HTTP와 같은 일반 텍스트 네트워크 트래픽을 사용하는지 여부를 나타냅니다. API 레벨 27 이하를 타겟팅하는 앱에서는 기본값이 "true"이고, API 레벨 28 이상을 타겟팅하는 앱에서는 기본값이 "false"입니다.
이 속성이 "false"로 설정되면 플랫폼 구성요소(예: HTTP 및 FTP 스택, DownloadManager, MediaPlayer)는 앱의 일반 텍스트 트래픽 사용 요청을 거부합니다. 타사 라이브러리도 이 설정을 준수하는 것이 좋습니다. 일반 텍스트 트래픽을 피하는 주요 이유는 기밀성, 진실성이 보장되지 않고 변조 방지가 불가능하기 때문입니다. 네트워크 공격자는 전송되는 데이터를 도청할 수 있으며 들키지 않고 수정할 수도 있습니다.
제공되는 액세스 수준으로 인해 Android 애플리케이션에서 나오는 일반 텍스트 트래픽을 모두 차단할 수는 없으므로, 이 플래그는 최대한 적용됩니다. 예를 들어 Socket API는 트래픽이 일반 텍스트인지 여부를 판별할 수 없으므로 이 플래그를 적용하는 데 있어 예외가 없습니다. 하지만 애플리케이션에서 나오는 대부분의 네트워크 트래픽은 상위 수준 네트워크 스택/구성요소에서 처리되며, 이 경우 ApplicationInfo.flags 또는 NetworkSecurityPolicy.isCleartextTrafficPermitted()에서 읽어 들여 이 플래그를 적용할 수 있습니다.
WebView는 API 레벨 26 이상을 타겟팅하는 애플리케이션의 경우 이 속성을 적용합니다.
앱 개발 중에 StrictMode를 사용하여 앱의 일반 텍스트 트래픽을 식별할 수 있습니다. 자세한 내용은 StrictMode.VmPolicy.Builder.detectCleartextNetwork()를 참고하세요.
이 속성은 API 레벨 23에 추가되었습니다.
이 플래그는 Android 7.0(API 레벨 24) 이상에서 Android 네트워크 보안 구성이 있는 경우 무시됩니다.
'Domain > Android' 카테고리의 다른 글
[Android] MediaStore ( Android 11 / Android 버전 대응 / Storage 정책 ) (0) | 2021.04.23 |
---|---|
[Android] 위치정보 권한 ( Android10 Location / Location Permission / COARSE_LOCATION / FINE_LOCATION / BACKGROUND_LOCATION ) (0) | 2021.04.23 |
[Android] MVC vs. MVP vs. MVVM (0) | 2020.09.21 |
[Android] DataBinding (0) | 2020.09.21 |
[Android] Context란? (0) | 2020.09.08 |
댓글