Android Pie(9) 와 GoogleMap
Android 9.0 (Pie) 에서 GoogleMap 을 사용할 경우 아래와 같은 "org.apache.http.ProtocolVersion" 클래스를 찾을 수 없다는 에러를 만납니다.
java.lang.NoClassDefFoundError: Failed resolution of: Lorg/apache/http/ProtocolVersion;
at fb.b(:com.google.android.gms.dynamite_mapsdynamite@15090081@15.0.90 (100400-231259764):3)
at fa.a(:com.google.android.gms.dynamite_mapsdynamite@15090081@15.0.90 (100400-231259764):3)
at fc.a(:com.google.android.gms.dynamite_mapsdynamite@15090081@15.0.90 (100400-231259764):15)
at com.google.maps.api.android.lib6.drd.al.a(:com.google.android.gms.dynamite_mapsdynamite@15090081@15.0.90 (100400-231259764):6)
at ee.a(:com.google.android.gms.dynamite_mapsdynamite@15090081@15.0.90 (100400-231259764):23)
at ee.run(:com.google.android.gms.dynamite_mapsdynamite@15090081@15.0.90 (100400-231259764):8)
Caused by: java.lang.ClassNotFoundException: Didn't find class "org.apache.http.ProtocolVersion" on path: DexPathList[[zip file "/data/user_de/0/com.google.android.gms/app_chimera/m/00000021/MapsDynamite.apk"],nativeLibraryDirectories=[/data/user_de/0/com.google.android.gms/app_chimera/m/00000021/MapsDynamite.apk!/lib/arm64-v8a, /system/lib64, /system/vendor/lib64]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:134)
at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
at ad.loadClass(:com.google.android.gms.dynamite_dynamiteloader@15090081@15.0.90 (100400-231259764):4)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
at fb.b(:com.google.android.gms.dynamite_mapsdynamite@15090081@15.0.90 (100400-231259764):3)
at fa.a(:com.google.android.gms.dynamite_mapsdynamite@15090081@15.0.90 (100400-231259764):3)
at fc.a(:com.google.android.gms.dynamite_mapsdynamite@15090081@15.0.90 (100400-231259764):15)
at com.google.maps.api.android.lib6.drd.al.a(:com.google.android.gms.dynamite_mapsdynamite@15090081@15.0.90 (100400-231259764):6)
at ee.a(:com.google.android.gms.dynamite_mapsdynamite@15090081@15.0.90 (100400-231259764):23)
at ee.run(:com.google.android.gms.dynamite_mapsdynamite@15090081@15.0.90 (100400-231259764):8)
해결 방법
AndroidMainfest.xml 파일의 <application>...</application> 태그 안에 아래의 문구를 삽입해주면 됩니다.
<uses-library android:name="org.apache.http.legacy" android:required="false"/>
대충 Stackoverflow 에 달린 글에서 결론을 보면, Android Pie 는 이미 나왔는데, GoogleMap 쪽이 대응을 못함이고, 그 원인은 Android 6에서 Apache Http 클라이언트에 대한 지원이 제거되어서 그렇다고 나온다.
구글 : https://developers.google.com/maps/documentation/android-sdk/config#specify_requirement_for_apache_http_legacy_library
해결 방법 참고 : https://stackoverflow.com/a/50794266/3897810
'Dev > Android' 카테고리의 다른 글
Android 화면 레코딩 방법 - MediaRecorder (0) | 2019.06.10 |
---|---|
안드로이드 - Notification 갱신 (0) | 2019.03.26 |
GoogleMap Marker 설정 - 현재위치 Icon 설정 (0) | 2019.02.20 |
레이아웃 그림자 - Layout Shadow Drawable (0) | 2019.02.13 |
Android Keyboard Show Hide (0) | 2019.01.18 |