카카오맵 API를 호출하면 아래와 같은 에러들이 뜬다.
구글링을 해본 결과 안드로이드P (api 28) 부터는 보안정책이 강화되어 HTTP 트래픽을 차단한다고 한다.
우리는 항상 에러 내용을 구글링하지만, 구글링하기 전에 에러 내용부터 파악할 필요가 있다.
(요즘 특히 느낀다... 읽어보면 대강 파악이 됨)
Cleartext HTTP traffic to ot1.maps.daum-img.net not permitted
음... Cleartext HTTP traffic이 허가되지 않았다고 한다.
그럼 뭐 허용해주면 될텐데, 찾아보니 이런 방법이 있다고 한다.
1. android:usesCleartextTraffic="true"
AndroidManifest.xml의 <application>에
android:usesCleartextTraffic="true"
를 작성해주면 된다고 한다.
<application android:usesCleartextTraffic="true" // ...
일단 해결은 했다.
그런데 이건 모든 http에 대한 cleartext 트래픽은 무조건 허용이 되는 것 같다.
이러면 안된다. 그래서 다른 방법을 사용하기로 했다.
2. network_security_config.xml 추가
res에 xml폴더를 만들고 network_security_config.xml 파일을 만들어준다.
코드는 다음과 같다.
<?xml version="1.0" encoding="utf-8"?> <network-security-config> <domain-config cleartextTrafficPermitted="false"> <domain includeSubdomains="true">maps.daum-img.net</domain> </domain-config> </network-security-config>
코드를 보면 cleartext에 대한 트래픽을 허용할 도메인 리스트를 관리할 수 있다.
이렇게 하면 maps.daum-img.net 도메인에서 들어오는 트래픽만 허용시킬 수 있게 된다.
그래서 이걸 사용하기로 했다.
network_security_config.xml 파일을 만들었으면 가져다 쓸 차례다.
AndroidManifest.xml 파일로 돌아가서 <application> 부분에 이렇게 추가해준다.
android:networkSecurityConfig="@xml/network_security_config"
여기까지 하고 구동해보면 아주 잘 된다!
만약 이렇게 해도 해결이 안된다면 프로젝트 엎고 새로 만들어보는 것이 좋다.
왜냐하면 내가 그렇게 해결했다......ㅎ;
진짜 이거 하나 띄우려고 몇시간을 헤멘건지 ㅠ
처음엔 안드로이드 버전이 달라서 안되고
그 다음은 gradle 문제 생기고... 어휴 😥
뭐 여차저차해서 일단 지도는 띄웠다.
프로젝트의 원래 의도와 달리 내 개인용 맛집지도가 될 것 같은데 일단 끝까지 만들어보자
그럼 20000...!
Reference
https://developer.android.com/training/articles/security-config
https://developer.android.com/training/articles/security-config#CleartextTrafficPermitted
'프로그래밍 > 발생한 에러들' 카테고리의 다른 글
[Flutter / Android] Warning: Mapping new ns to old ns. This app is using a deprecated version of the Android embedding (4) | 2021.12.14 |
---|---|
[Javascript] getElementById is not a function (0) | 2021.10.02 |
[Android] 카카오지도 API 호출 시 앱이 꺼짐 (0) | 2021.09.10 |
[Springboot] MediaType.APPLICATION_JSON_UTF8 is deprecated (0) | 2021.08.14 |
intellij output에서 한글 깨지는 현상 (0) | 2021.08.14 |