chacha's

🕶 Glide 이용할 때 Http URL 사용 시 화면 안 보임 본문

Android/TIL

🕶 Glide 이용할 때 Http URL 사용 시 화면 안 보임

Cha_Cha 2021. 8. 7. 16:46
 class com.bumptech.glide.load.engine.GlideException: Failed to load resource- stackoverflow
 Opt out of cleartext traffic - Doc
 App manifest file <application> - Doc

ViewPager2를 이용하여 이미지 슬라이더를 구현하는 중에 이미지가 안 보이는 문제를 만났습니다. 처음에는 ViewPager2를 잘못 사용한 줄 알았지만 https 프로토콜을 사용하는 URL은 잘 보인다는 것을 알았습니다. 후에 로그를 제대로 읽으니 HttpException이라고 적혀있는 것을 보고 다시 한 번 로그를 잘 읽는 습관을 들여야겠다고 생각했습니다.😭😭😭

~ W/Glide: Load failed for http://imgnews.naver.net/image/5511/2021/04/29/0000055437_001_20210429165204063.jpg with size [996x1071]
    class com.bumptech.glide.load.engine.GlideException: Failed to load resource
    There was 1 root cause:
    com.bumptech.glide.load.HttpException(Failed to connect or obtain data, status code: -1)
     call GlideException#logRootCauses(String) for more detail

아래와 같이 AndroidManifest 파일에 선언해주니 해결되었습니다. 위의 문제는 Android 9(API level 28)부터 네트워크 보안상의 이유로 HTTP 프로토콜 접속을 제한했기 때문에 발생하는 것입니다.

따라서 아래의 코드를 AndroidManifest 파일에 선언함으로서 1️⃣ 모든 HTTP URL에 대한 접속을 허용할 수 있습니다.

// AndroidManifest.xml
    <application
        ...
        android:usesCleartextTraffic="true">

하지만 위와 달리 2️⃣ 일부 HTTP URL에대한 접속만 허용하고 싶은 경우, network_security_config.xml 파일을 생성하여 AndroidManifest.xml 파일에 등록합니다.

// res/xml/network_security_config.xml
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="false">
        <domain includeSubdomains="true">secure.example.com</domain>
        <domain includeSubdomains="true">cdn.example.com</domain>
    </domain-config>
</network-security-config>
// AndroidManifest.xml
<application
    ...
    android:networkSecurityConfig="@xml/network_security_config">

 

Comments