반응형
안드로이드에서 jsoup로 특정 url을 http로 접속 시 오류가 발생하였다.
원인은 안드로이드9(APL Lv 28) 부터 강화된 네트워크 보안정책으로 인한 오류.
예외 처리를 위한 3가지 방법
1. AndroidManifest.xml 파일의 <application> 부분에 android:usesCleartextTraffic="true" 로 설정
이 flag를 설정하게 되면 모든 cleartext 트래픽은 허용처리가 됩니다.
2. networkSecurityConfig 파일을 생성하고, AndroidManifest 에 등록
res/xml/network_security_config.xml 아래와 같이 추가
<domain includeSubdomains="true">xxx.com</domain> 등록된 도메인은 https 가 아니어도 허용.
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">xxx.com</domain>
</domain-config>
</network-security-config>
아래와 같이 추가할 경우는 secure.xxx.com 도메인만 항상 HTTPS를 통해서만 수행
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="false">
<domain includeSubdomains="true">secure.xxx.com</domain>
</domain-config>
</network-security-config>
그 다음에 AndroidManifest.xml 파일의 <application> 부분에 networkSecurityConfig속성 추가
<application
android:networkSecurityConfig="@xml/network_security_config"
~~~ >
</application>
3.Android Manifest.xml 파일에서 targetSandboxVersion를 1로 설정
SandboxVersion 속성값이 높을수록 보안 수준이 높아지며, 2일 경우 usesCleartextTraffic의 기본값은 false
따라서, 이 속성의 값을 1로 변경하면 문제를 해결
다만 Android 8.0 (API 26) 이상을 타겟팅하는 Android Instant Apps의 경우 이 속성을 2로 설정
참고로 앱이 설치되면 이 속성값을 더 높은 값으로 만 업데이트 할 수 있다고 함.
이 속성값을 다운 그레이드하려면 앱을 제거후 재설치 해야 함.
반응형
댓글