Dev/Android

Android Pie(9버전) 에서 Google Map 을 사용할 경우 만나는 에러

healthyryu 2019. 3. 11. 11:06

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

반응형