이 글은 기존 운영했던 WordPress 블로그인 PyxisPub: Development Life (pyxispub.uzuki.live) 에서 가져온 글 입니다. 모든 글을 가져오지는 않으며, 작성 시점과 현재 시점에는 차이가 많이 존재합니다.
작성 시점: 2019-01-21
지난주 금요일 (18일) 기준으로 Galaxy S8에 9.0 Beta가 시작되어 업데이트 하여 사용하고 있었으나, 구글 맵을 불러오면 아래 오류가 노출되면서 앱이 죽는 문제가 있었다.
2019-01-21 10:38:14.551 31596-31686/com.*** E/AndroidRuntime: FATAL EXCEPTION: Thread-7
Process: com.***, PID: 31596
java.lang.NoClassDefFoundError: Failed resolution of: Lorg/apache/http/ProtocolVersion;
at ez.b(:com.google.android.gms.dynamite_mapsdynamite@14799083@14.7.99 (100408-223214910):3)
at ey.a(:com.google.android.gms.dynamite_mapsdynamite@14799083@14.7.99 (100408-223214910):3)
at fa.a(:com.google.android.gms.dynamite_mapsdynamite@14799083@14.7.99 (100408-223214910):15)
at com.google.maps.api.android.lib6.drd.al.a(:com.google.android.gms.dynamite_mapsdynamite@14799083@14.7.99 (100408-223214910):6)
at ed.a(:com.google.android.gms.dynamite_mapsdynamite@14799083@14.7.99 (100408-223214910):21)
at ed.run(:com.google.android.gms.dynamite_mapsdynamite@14799083@14.7.99 (100408-223214910):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/0000006a/MapsDynamite.apk"],nativeLibraryDirectories=[/data/user_de/0/com.google.android.gms/app_chimera/m/0000006a/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@14799083@14.7.99 (100408-223214910):4)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
at ez.b(:com.google.android.gms.dynamite_mapsdynamite@14799083@14.7.99 (100408-223214910):3)
at ey.a(:com.google.android.gms.dynamite_mapsdynamite@14799083@14.7.99 (100408-223214910):3)
at fa.a(:com.google.android.gms.dynamite_mapsdynamite@14799083@14.7.99 (100408-223214910):15)
at com.google.maps.api.android.lib6.drd.al.a(:com.google.android.gms.dynamite_mapsdynamite@14799083@14.7.99 (100408-223214910):6)
at ed.a(:com.google.android.gms.dynamite_mapsdynamite@14799083@14.7.99 (100408-223214910):21)
at ed.run(:com.google.android.gms.dynamite_mapsdynamite@14799083@14.7.99 (100408-223214910):8)
이 문제인데, 이 문제에 대해 제기된 이슈가 구글쪽 이슈 트래커에 존재하나 wont fix라 적혀있었다.
즉, 이 행동은 정상 행동으로 AndroidManifest.xml 의 application 태그 내부에 아래 코드를 적어주면 된다는 것이다.
<uses-library
android:name="org.apache.http.legacy"
android:required="false" />
다만, Apache Http가 Android 6.0 부터 삭제되었음에도 불구하고 아직까지 사용하는지는 아직도 의문이긴 하다.
Google 의 Http 통신 라이브러리인 Volley도 같은 문제가 발생하는 것 같다. 마찬가지로 해결 방법은 위와 같다.