Android 9 (Pie) 부터 http 접근이 기본적으로 제한되도록 변경되었습니다. https 가 이제는 거의 기본인듯 하네요.
해당 내용은 해당 링크에서도 확인하실 수 있습니다. (하단 스크린샷 참고)
https://developer.android.com/about/versions/pie/android-9.0-changes-28?hl=ko
이에 따라 기존에 Api 서버 또는 이미지 서버가 Http 로 되어있을 경우 cleartext http traffic to not permitted 에러와 함께 정상적으로 응답을 받지 못하게 됩니다. (단, targetSdk 가 28 (Android Pie) 미만인 경우에는 사용하더라도 정상동작 합니다.)
이에 맞는 대처방법으로는 AndroidManifest.xml 파일의 <application> 수정을 통해 쉽게 http 허용이 가능합니다.
<방법> 4가지의 방법 중에 자신의 프로젝트에 맞게 1개의 방법만 수행하시면 됩니다.
- AndroidManifest.xml 파일 내의 <application> 부분에 android:usesCleartextTraffic="true" 로 설정
- 별도의 res/xml/netsork_security_config.xml 생성. 이 방법은 내가 원하는 host 만 http 를 허용할 경우에 사용합니다.
- targetSdk를 28미만으로 지정한다. 해당 방법은 그렇게 추천하지 않습니다. 버전이 낮아지면 Android 버전 업그레이드에 따른 좋은 기능을 사용하지 못하므로 앞의 방법들을 추천
- (추가)AndroidManifest.xml 파일 내에 targetSandboxVersion = 1 로 설정. 해당 값은 2 이상부터는 기본값으로 usesCleartextTraffix=false 로 변경됩니다. 이 속성의 숫자가 높을수록 보안이 높아집니다. 제한사항으로 Android 8.0(API 26) 이상을 target 하는 Instant App 의 경우는 속성값을 2로 설정해야 합니다. 그리고 해당 값은 앱 업데이트 진행시 값의 다운그레이드는 불가하다고 하니 각자의 상황에 맞게 쓰셔야 할 듯 하네요.
저의 경우는 Instant App 도 아니고 해서 첫번 째 또는 두번 째 방법이 더 간편한 것 같네요.
대부분은 아시겠지만 알면서도 잊어먹고 꼭 에러를 보고서야 고치곤 합니다. 습관화가 되었으면 하는 바램입니다.
모두 즐거운 개발 하시길~~!!
'Android > Tips' 카테고리의 다른 글
Android Studio & BigSur 깜빡거림 렉 버그 (1) | 2021.01.06 |
---|---|
SDCard 통째로 Cloning 하는 법 (Ubuntu 20.04.1 LTS) (2) | 2021.01.06 |
(필수&추천) 자주쓰는 안드로이드 adb 명령 정리 ( Mac 또는 리눅스 계열 OS용 ) (1) | 2020.02.06 |
No toolchains found in the NDK toolchains, TaskExecutionException, RuntimeException (0) | 2018.10.05 |
커스텀 콜백 ( 리스너) 만들기 (1) | 2018.06.18 |