Target SDK 를 28로 올리면서 갑자기 ClearText Not Permitted 라는 메시지를 로그캣에서 볼 수 있었다.
웹뷰 로드도 안되고,
API 전송도 안되고...
단지 28로 올렸을 뿐인데...
온전히 의심은 타겟과 컴파일 sdk 였다.
안드로이드 PIE(9.0) 에서 강화된 네트워크 보안정책으로 인해 오류를 내뱉었다.
해결방법은 3가지가 존재한다.
1. AndroidManifest 에서 application 태그에
android:userCleartextTraffic="true" 로 설정을 한다.
2. networkSecurityConfig 파일을 생성하고, AndroidManifest 에 설정을 한다.
network_security_config.xml
<?xml version="1.0" encoding="utf-8"?> <network-security-config> <domain-config cleartextTrafficPermitted="true"> <domain includeSubdomains="true">mydomain.com 여기에 사용할 도메인을 등록한다.</domain> </domain-config> </network-security-config> |
그런 후, 메니페스트 Application 태그에
android:networkSecurityConfig="@xml/network_security_config"
를 설정해둔다.
3. AndroidManifest 파일에서 targetSandboxVersion 을 1로 설정한다.
targetSandboxVersion 을 높일수록 보안 수준이 높아지며, 2일 경우 userCleartextTraffic의 값이 false 로 설정됩니다.
그러나 Android 8.0 (API 26) 이상을 타겟팅하는 앱의 경우 이 속성을 2로 설정해야 합니다.
그리고, 한번 앱이 설치되면 속성값을 더 높은 값으로만 업데이트 할 수 있다고 합니다. 마치 버전코드 같이 사용을 하고 있나봅니다.
참고하세요.
'안드로이드 > TIP' 카테고리의 다른 글
com.google.android.gms.common.api.ApiException: 10 (0) | 2020.10.27 |
---|---|
카카오 등에서 키해시가 맞지 않는 경우 (0) | 2020.10.27 |
특정 퍼미션만 제거해보자! (0) | 2019.02.21 |
안드로이드 3.3.1 패브릭 오류 (0) | 2019.02.18 |
웹뷰 비동기 로직 호출 (0) | 2019.01.04 |