[안드로이드/Kotlin] net::ERR_CLEARTEXT_NOT_PERMITTED 에러

토시·2022년 4월 27일
0

[Project] 개인공부

목록 보기
7/15
post-thumbnail

하이브리드 앱을 구현하기 위해 안드로이드로 웹뷰 띄우기 실습을 진행하던 중 아래와 같은 에러가 가상 디바이스에서 발생했다. 해결해보자!

이 에러는 안드로이드가 기본적으로 Http 접근을 허용하지 않기 때문에 발생한다. 따라서 Https로 url을 수정하는 방식으로 해결할 수도 있지만, https를 지원하지 않는 사이트의 경우엔 http 접근을 해야하기 때문에 다음과 같은 해결책을 찾아보았다. 두 가지 방법이 있다.

모든 Http Url에 대해 접근 허용

먼저 AndroidManifest.xml 파일의 application 태그를 찾는다.
android:usesCleartextTraffic="true" 를 추가한다.
이제 모든 Http 주소에 접근할 수 있다.

일부 Http Url에 대해 접근 허용

만약 모든 Http 사이트에 대한 접근을 허용하는 것이 아니라, 몇몇 사이트에 대한 접근만 허용하려면 다음과 같이 해야 한다.

/res/xml/network_security_config.xml 파일을 생성하고 예외 항목을 추가한다.
(아래 1,2번중 택1)

  1. Https가 아니어도 허용할 도메인 등록 (example.com은 http도 가능)
<?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>
  1. Https를 통해서만 가능한 도메인 등록 (example2.com은 https만 가능)
<?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>

출처

https://developside.tistory.com/85

profile
개발하는 토시

0개의 댓글