Google Maps Android API 报 NoClassDefFoundError 错误

20

我的应用只是由一个带有遮盖的地图组成,但是当我创建我的MapView时,我的应用程序崩溃并显示NoClassDefFoundError错误。我正在使用与我的目标相匹配的Google API AVD,但显然我仍在做错了些什么。有什么想法吗?

编辑:如果有帮助的话,我的NoClassDefFoundError抱怨[generic]。我可以理解为什么没有[generic]的类定义,但我不确定它来自哪里。

另外,稍后的ClassNotFoundException抱怨dalvik.system.PathClassLoader[/data/app/mathphreak.cellmap-1.apk]中的com.google.android.maps.MapView,在这之后会导致不同的NoClassDefFoundError,其中包括java.lang.NoClassDefFoundError: com.google.android.maps.MapView。

5个回答

50

请确保在您的应用程序清单中包含了以下行:

<uses-library android:required="true" android:name="com.google.android.maps" />

并且确保它放在正确的位置。 我遇到的问题(类似的错误消息)是我把它放在那里,但像uses-permission一样,它只是在根元素manifest下面,而uses-library元素实际上应该放在application元素下面。 如果我没有表达清楚,请参阅Sameers的链接中的“配置应用程序清单”部分。


@Jackie,抱歉我无法帮助你。乍一看,似乎你需要找到一种将虚拟机链接到实际Google账户的方法,但是老实说我不知道...所以为什么不搜索一下:genymotion maps NoClassDefFoundError并解决它,然后在这里和关于这个特定问题的众多SO问题上发布答案并获得声誉呢?或者至少去投票支持所有这些问题 :) - Timo
1
谢谢@Timo, 我解决了这个问题。只需从PlayStore安装谷歌地图即可。 我猜设备必须有谷歌地图才能使用Map v2。 - Jackie

12

我曾经遇到过同样的问题,通过Timo Lehto的帮助得以解决,但是需要加入以下字符串:

<uses-library android:required="true" android:name="com.google.android.maps" />

在开头的应用程序标签之后

   <application
        android:hardwareAccelerated="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <uses-library
            android:name="com.google.android.maps"
            android:required="true" />

        <activity ...

2

我也遇到了同样的问题,通过在清单文件中进行更改解决了这个问题:

<activity android:name=".GpsActivity" ></activity>

to

<activity android:name="GpsActivity" ></activity>

“点”是不同之处。

1

可能有两个问题。

i)确保您在AndroidManifest.xml类中定义了所有Activity类。

ii)确保您使用“Google APIs”而不是“Android 2.x”编译Android项目,如果只使用Google APIs进行编译,则会添加Google Maps类。


谢谢@Sharj,我已经尝试了所有上面的答案,但是你的技巧起了作用。 - Adnan Amjad

1

还有一件事要检查,

  • 如果您有两组地图库,则无法正常工作。请在构建路径中进行检查。

希望这对某些人有用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接