안드로이드(Android) WebView 사용시 ERR_CLEARTEXT_NOT_PERMITTED 오류 해결방법
안드로이드 웹뷰 오류 처리 기록
QR코드 라이브러리를 가지고 테스트하는 과정에 오류가 발생하였다. 웹뷰에서 url를 하나 열었는데 “웹페이지를 사용할 수 없음” 오류가 발생하였다. “net::ERR_CLEARTEXT_NOT_PERMITTED”
웹뷰 사용시 URL 주소는 SSL인증서로 보안처리가된 https://로 시작하는 주소를 호출해야한다. 아래 오류가 발생한 주소는 http://로 시작되고 있다. 안드로이드 OS 9(파이) 버전 부터 WebView에서 http://로 시작하는 url호출은 막았다. 보안상에 문제 발생을 사전에 차단 하기 위함은 아닌 것 같다. 우회 할 수 있는 방법을 제공하고 있기 때문이다.
ERR_CLEARTEXT_NOT_PERMITTED 오류 해결방법
AndroidManifest.xml의 application 태그에 android:usesCleartextTraffic=”true 추가한다.
<application
android:name=".HiApplication"
android:allowBackup="false"
android:fullBackupContent="false"
android:hardwareAccelerated="false"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:largeHeap="true"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme"
tools:replace="android:allowBackup"
android:usesCleartextTraffic="true"
......................
</application>
다른 방법도 있다. networkSecurityConfing를 사용하는 방법이다. 이 방법은 res/xml/network_security_config.xml를 추가하여 AndoridManifest.xml의 application 태그에 networkSecurityConfig 속성을 추가하는 방법이다.
1.res/xml/network_security_config.xml 추가
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">amazon.com</domain>
</domain-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">ebay.ca</domain>
</domain-config>
</network-security-config>
2. AndoridManifest.xml의 application 태그에 networkSecurityConfig 속성을 추가한다. network_security_config.xml 파일에서 추가한 domain-config cleartextsTrafficPermitted 속성이 true일 경우에 동작을 하게되니 유의하자.
<application
android:name=".HiApplication"
android:allowBackup="false"
tools:replace="android:allowBackup"
android:networkSecurityConfig="@xml/network_security_config"
......................
</application>
참고자료 :
Android 8: Cleartext HTTP traffic not permitted
웹뷰 사용에 있어 많은 변화가 있었다. 직장 다닐 때는 웹뷰를 사용하는 일이 굉장히 많았다. 하이브리드앱이 주를 이루었기 때문이다. 지금은 1인 개발자가 되어 웹뷰를 거의 사용하지 않다보니 정보가 늦여지는 경향이 있다.