프로그래밍/Android Studio

안드로이드 6.0 target sdk version 28 useLibrary 'org.apache.http.legacy' 알 수 없는 강종현상 해결 방법

Br0Ma 2020. 6. 25. 13:46




안드로이드 6.0 target sdk version 28 useLibrary 'org.apache.http.legacy' 
알 수 없는 강종현상 해결 방법


안녕하세요 브로마입니다.


안드로이드 어플리케이션 개발을 하면서 신기한 문제를 맞닥뜨리게 되어 골치아픈 경험에 이 글을 작성합니다. 기존의 어플을 조금 수정하여 새로운 버전의 어플리케이션 업데이트를 하려고 구글 플레이 콘솔에 apk파일을 업로드 하였는데 아래와 같은 업로드 실패가 떠버립니다.


이건 또 무슨 문제인가 내부의 구글 문서를 조금 확인해보니 2019년 11월 부터 Android 9.0 (Api 레벨로는 28) 이상을 타겟팅하지 않은, 즉, 그 이하 레벨의 API를 타겟으로 하는 앱은 업데이트가 되지 않는다는 뜻이었습니다. 그래서 "아 뭐야 타겟만 올리면 쉽게 해결되는 문제겠거니" 하고 gradle파일을 수정하고 sync를 누르고 빌드해야지.. 하고 누르는 순간 에러를 뿜어 내더랍니다.


해서 한 두세시간 정도를 구글에 삽질을 해보았는데 저의 경우 아래의 문제 때문에 위와 같은 에러가 나오던 것이었습니다.


useLibrary 'org.apache.http.legacy'


본인이 작성한 코드에 useLibrary 'org.apache.http.legacy' 가 있는지 한번 확인해보시기 바랍니다. 저의 경우는 이번 에러는 이 부분에서 나타나고 있었습니다. Android 6.0 이상부터는 Apache HTTP 클라이언트 지원 기능이 삭제되었습니다. 그러다가 Android 9 부터는 이 라이브러리가 bootclasspath에서 제거되고 기본적으로 앱 내에서 사용이 불가능해졌습니다.


뭐 이래저래 이유가 있다고는 하는데 해결방법만 간단하게 이야기하자면 아래의 소스들을 추가해주시면 됩니다. 다만 해당 해결방법은 저와 동일하거나 유사한 이유로 문제가 발생하는 분들에게만 해당할 것으로 보입니다.


1
2
3
4
5
6
<application
    android:usesCleartextTraffic="true" >
 
<uses-library
    android:name="org.apache.http.legacy"
    android:required="false" />
cs


Cleartext를 허용해주는 것은 application 태그에 넣어주시면 되고 library는 아래쪽 아무곳에나 넣어주면 되는 것 같습니다. 자세한 위치는 다들 아실것이라 생각하고, 위 방법으로 겪고들 계신 문제가 해결되었으면 좋겠네요. 


감사합니다.