안드로이드 API 28 (Android 9.0) 버전에서 org.apache.http.legacy 사용하기
org.apache.http.legacy 를 사용하다가 버전을 올릴경우 안되는 상황이 발생하는데
해당 라이브러리를 사용할 수 있게 하는 방법에 대해 알아보자
Android 8.0 이하에서는 단순하게 app > build.gradle 에서
아래와 같이 라이브러리를 선언만 해주면 사용이 가능했으나
API를 28로 올릴경우 안되는 상황이 발생한다.
useLibrary 'org.apache.http.legacy'
해당 라이브러리를 그대로 사용하기 위해서
기존에 선언한 부분은 그대로 두고 새롭게 몇가지만
추가해주면 된다.
우선
res > xml > network_security_config.xml
해당 폴더에 xml 파일을 하나 생성해준다.
해당 xml파일 안에 다음과 같이 선언해준다.
- network_security_config.xml -
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true">
<trust-anchors>
<certificates src="system" />
</trust-anchors>
</base-config>
</network-security-config>
이제 준비는 끝났으니 해당 xml을 사용하기만 하면 된다.
AndroidManifest.xml에서
다음과 같이 두개를 선언해주면 된다.
<application> 태그 안에 android:networkSecurityConfig="@xml/network_security_config"
그리고 <application> 이 끝나기 전에
<uses-library> 를 사용하여 android:name="org.apache.http.legacy" 를 선언해주자
- AndroidManifest.xml -
<application
...
android:networkSecurityConfig="@xml/network_security_config"
>
<activity ...
...
<uses-library
android:name="org.apache.http.legacy"
android:required="false"
/>
</application>
이제 기존 방식대로 사용이 가능하다.
해당 networkSecurityConfig 관련한 xml은
https://developer.android.com/training/articles/security-config?hl=ko
네트워크 보안 구성으로 해당 developers 사이트에서 상세내용 확인이 가능하다.
댓글