运行地图活动时应用崩溃

时间:2018-06-17 13:19:20

标签: android performance kotlin

我的项目地图活动无效 我刚刚粘贴了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写入失败:不允许操作

3 个答案:

答案 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。

最好使用此解决方案https://stackoverflow.com/a/50944537/5710605

答案 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的元素。