정상에서 IT를 외치다

[Android, TargetVersion 28] TargetVersion 28 에 따른 조치 사항 본문

안드로이드

[Android, TargetVersion 28] TargetVersion 28 에 따른 조치 사항

Black-Jin 2019. 3. 6. 18:25
반응형


안녕하세요. 블랙진입니다.


2018년 8월 6일 안드로이드 9 Pie가 정식 출시 되었습니다.  이에 발맞춰 안드로이드 TargetVersion 을 28로 올려야 되는 시련이 우리에게 찾아왔습니다. ㅠㅜ


Android Developers Blog


위 링크와 설명을 보면 신규앱은 2019년 8월 까지, 기존의 앱은 2019년 11월 까지  TargetVersion 을 28로 올려야 됩니다. 버전을 올리지 않으면 구글스토어에서 업데이트를 받을 수 없다고 합니다.

  • August 2019: New apps are required to target API level 28 (Android 9) or higher.
  • November 2019: Updates to existing apps are required to target API level 28 or higher.


동작 변경사항 : API 레벨 28


다행히 TargetVersion 28로 올리면서 발생하는 변경사항 및 해결책을 구글에서 정리해 주었습니다. 업데이트 전에 한번더 꼼꼼히 확인을 해봐야겠지요?


TargetVersion 을 28로 올리면서 겪었던 에러사항에 대해서 정리해보았습니다.


<1. Error>


NetWebClient.java

java.lang.NoClassDefFoundError: Failed resolution of: Lorg/apache/http/message/HeaderGroup;



<solution>


- Apache HTTP 클라이언트 지원 중단

Android 6.0에서는 Apache HTTP 클라이언트에 대한 지원이 제거되었습니다. Android 9부터는 이 라이브러리가 bootclasspath에서 제거되고 기본적으로 앱에서 사용할 수 없습니다.

Android 9 이상을 대상으로 하는 앱이 Apache HTTP 클라이언트를 계속 사용하려면 다음을 AndroidManifest.xml에 추가해야 합니다.

<uses-library android:name="org.apache.http.legacy" android:required="false"/>

Apache HTTP 클라이언트 중지로 인한 버그였습니다. 위 설명과 같이 AndroidManifest <application> .. </application > 사이에 위 코드를 적용해 주면 해결됩니다.




<2. Error>


안드로이드 웹뷰 사용시 위와 같이 ERR_CLEARTEXXT_NOT_PREMITTED 에러와 함께 동작이 안되었습니다.


<solution>


- 기본적으로 네트워크 TLS 사용

앱이 Android 9 이상을 대상으로 하는 경우 isCleartextTrafficPermitted() 메서드는 기본적으로 false를 반환합니다. 앱이 특정 도메인을 위해 일반 텍스트를 사용할 필요가 있을 경우 cleartextTrafficPermitted앱의 네트워크 보안 구성에서 해당 도메인을 true로 명시적으로 설정해야 합니다.

android:usesCleartextTraffic="true"

웹뷰를 많이 사용하는 경우라면 AndroidManifest <application>에 위 코드를 꼭 추가해 주어야 합니다.



- 지속적인 에러 리포팅 후 발생한 에러에 관해 계속 추가 정리할 예정입니다.

반응형
Comments