我的项目地图活动无效
我刚刚粘贴了api密钥google_maps_api.xml
然后点击运行
logcat的:
E / AndroidRuntime:致命异常:线程-5 处理:com.example.appmy.lofind,PID:10901 java.lang.NoClassDefFoundError:解析失败:Lorg / apache / http / ProtocolVersion; 在el.b(:com.google.android.gms.dynamite_mapsdynamite @ 12848026 @ 12.8.48(040700-196123505):3) 在ek.a(:com.google.android.gms.dynamite_mapsdynamite @ 12848026 @ 12.8.48(040700-196123505):4) 在em.a(:com.google.android.gms.dynamite_mapsdynamite @ 12848026 @ 12.8.48(040700-196123505):51) 在com.google.maps.api.android.lib6.drd.ap.a(:com.google.android.gms.dynamite_mapsdynamite @ 12848026 @ 12.8.48(040700-196123505):11) 在dw.a(:com.google.android.gms.dynamite_mapsdynamite @ 12848026 @ 12.8.48(040700-196123505):16) 在dw.run(:com.google.android.gms.dynamite_mapsdynamite @ 12848026 @ 12.8.48(040700-196123505):61) 引起:java.lang.ClassNotFoundException:路径上没有找到类“org.apache.http.ProtocolVersion”:DexPathList [[zip file“/system/priv-app/PrebuiltGmsCore/app_chimera/m/MapsDynamite.apk”] ,nativeLibraryDirectories = [/ data / user_de / 0 / com.google.android.gms / app_chimera / m / 00000006 / MapsDynamite.apk!/ lib / x86,/ system / lib]] 在dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:126) at java.lang.ClassLoader.loadClass(ClassLoader.java:379) at ad.loadClass(:com.google.android.gms.dynamite_dynamiteloader @ 12848026 @ 12.8.48(040700-196123505):25) 在java.lang.ClassLoader.loadClass(ClassLoader.java:312) 在el.b(:com.google.android.gms.dynamite_mapsdynamite @ 12848026 @ 12.8.48(040700-196123505):3) 在ek.a(:com.google.android.gms.dynamite_mapsdynamite @ 12848026 @ 12.8.48(040700-196123505):4) 在em.a(:com.google.android.gms.dynamite_mapsdynamite @ 12848026 @ 12.8.48(040700-196123505):51) 在com.google.maps.api.android.lib6.drd.ap.a(:com.google.android.gms.dynamite_mapsdynamite @ 12848026 @ 12.8.48(040700-196123505):11) 在dw.a(:com.google.android.gms.dynamite_mapsdynamite @ 12848026 @ 12.8.48(040700-196123505):16) 在dw.run(:com.google.android.gms.dynamite_mapsdynamite @ 12848026 @ 12.8.48(040700-196123505):61) E / SchedPolicy:set_timerslack_ns写入失败:不允许操作
答案 0 :(得分:41)
我在找到了另一种解决方案 Android Google maps java.lang.NoClassDefFoundError: Failed resolution of: Lorg/apache/http/ProtocolVersion
只需将其添加到您的清单中即可
<uses-library android:name="org.apache.http.legacy" android:required="false"/>
更新:
从Google Maps SDK版本 16.1.0 开始,您可以跳过上述解决方案,因为标记已添加到地图库的AndroidManifest中。
https://developers.google.com/maps/documentation/android-sdk/releases#2019-02-06
在AndroidManifest.xml中添加了以下声明以支持 Android P及更高版本上的Apache HTTP客户端。更新到 com.google.android.gms:play-services-maps:16.1.0可以将其删除 您自己的AndroidManifest.xml中的一行。 (问题117591497)
<uses-library android:name="org.apache.http.legacy" android:required="false"/>
答案 1 :(得分:11)
在使用目标SDK 28时,这里存在相同的问题。恢复为SDK 27可以解决此问题。
请勿还原您的目标SDK。
答案 2 :(得分:0)
将其放在清单标签中:
<uses-library android:name="org.apache.http.legacy" android:required="false"/>
更多信息:https://issuetracker.google.com/issues/79478779
如Google文档所述:
如果您使用的是com.google.android.gms:play-services-maps:16.0.0或 下方,并且您的应用定位到API级别28(Android 9.0)或更高, 您必须在 AndroidManifest.xml的元素。