하이브리드 앱을 구현하기 위해 안드로이드로 웹뷰 띄우기 실습을 진행하던 중 아래와 같은 에러가 가상 디바이스에서 발생했다. 해결해보자!
이 에러는 안드로이드가 기본적으로 Http 접근을 허용하지 않기 때문에 발생한다. 따라서 Https로 url을 수정하는 방식으로 해결할 수도 있지만, https를 지원하지 않는 사이트의 경우엔 http 접근을 해야하기 때문에 다음과 같은 해결책을 찾아보았다. 두 가지 방법이 있다.
먼저 AndroidManifest.xml
파일의 application
태그를 찾는다.
android:usesCleartextTraffic="true"
를 추가한다.
이제 모든 Http 주소에 접근할 수 있다.
만약 모든 Http 사이트에 대한 접근을 허용하는 것이 아니라, 몇몇 사이트에 대한 접근만 허용하려면 다음과 같이 해야 한다.
/res/xml/network_security_config.xml
파일을 생성하고 예외 항목을 추가한다.
(아래 1,2번중 택1)
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">example.com</domain>
</domain-config>
</network-security-config>
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="false">
<domain includeSubdomains="true">example2.com</domain>
</domain-config>
</network-security-config>
그 다음 AndroidManifest.xml 파일의 부분에 다음 속성을 추가한다.
<application
android:networkSecurityConfig="@xml/network_security_config"
>
</application>