Java 我的谷歌地图android应用程序不断崩溃

Java 我的谷歌地图android应用程序不断崩溃,java,android,xml,google-maps-api-2,Java,Android,Xml,Google Maps Api 2,我遵循了vogella的两个教程和其他一些看起来很相似的教程…非常相似,但没有效果。我在nexus 7上加载了应用程序,但它在启动时“不幸的是MyMapView已停止工作”崩溃。这是清单: <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.macmozart.mymapview" andr

我遵循了vogella的两个教程和其他一些看起来很相似的教程…非常相似,但没有效果。我在nexus 7上加载了应用程序,但它在启动时“不幸的是MyMapView已停止工作”崩溃。这是清单:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.macmozart.mymapview"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
    android:minSdkVersion="17"
    android:targetSdkVersion="17" />
<uses-feature
    android:glEsVersion="0x00020000"
    android:required="true"/>    
<permission
    android:name="com.macmozart.mymapview.permission.MAPS_RECEIVE"
    android:protectionLevel="signature" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission
 android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <uses-library android:name="com.google.android.maps" />
    <activity
        android:name="com.macmozart.mymapview.MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <meta-data
        android:name="com.google.android.maps.v2.API_KEY"
        android:value="AIzaSyBZ1Bt7rjB863Jy-B05zls6k8XZsBGQ6-4" />
</application>
</manifest>
知道我做错了什么吗?我真的需要这个来工作

编辑:将logcat日志导出到txt文件后,我刚刚复制了:

10-19 11:45:08.565: W/dalvikvm(638): Class resolved by unexpected DEX: Lcom/macmozart/mymapview/MainActivity;(0x4231c508):0x418ce000 ref [Lcom/google/android/maps/MapActivity;] Lcom/google/android/maps/MapActivity;(0x4231c508):0x40064000
10-19 11:45:08.565: W/dalvikvm(638): (Lcom/macmozart/mymapview/MainActivity; had used a different Lcom/google/android/maps/MapActivity; during pre-verification)
10-19 11:45:08.565: W/dalvikvm(638): Unable to resolve superclass of Lcom/macmozart/mymapview/MainActivity; (1310)
10-19 11:45:08.565: W/dalvikvm(638): Link of class 'Lcom/macmozart/mymapview/MainActivity;' failed
10-19 11:45:08.575: D/AndroidRuntime(638): Shutting down VM
10-19 11:45:08.575: W/dalvikvm(638): threadid=1: thread exiting with uncaught exception (group=0x41bbc700)
10-19 11:45:08.575: E/AndroidRuntime(638): FATAL EXCEPTION: main
10-19 11:45:08.575: E/AndroidRuntime(638): java.lang.IllegalAccessError: Class ref in pre-verified class resolved to unexpected implementation
10-19 11:45:08.575: E/AndroidRuntime(638):  at dalvik.system.DexFile.defineClass(Native Method)
10-19 11:45:08.575: E/AndroidRuntime(638):  at dalvik.system.DexFile.loadClassBinaryName(DexFile.java:211)
10-19 11:45:08.575: E/AndroidRuntime(638):  at dalvik.system.DexPathList.findClass(DexPathList.java:313)
10-19 11:45:08.575: E/AndroidRuntime(638):  at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:51)
10-19 11:45:08.575: E/AndroidRuntime(638):  at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
10-19 11:45:08.575: E/AndroidRuntime(638):  at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
10-19 11:45:08.575: E/AndroidRuntime(638):  at android.app.Instrumentation.newActivity(Instrumentation.java:1061)
10-19 11:45:08.575: E/AndroidRuntime(638):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2128)
10-19 11:45:08.575: E/AndroidRuntime(638):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
10-19 11:45:08.575: E/AndroidRuntime(638):  at android.app.ActivityThread.access$600(ActivityThread.java:141)
10-19 11:45:08.575: E/AndroidRuntime(638):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
10-19 11:45:08.575: E/AndroidRuntime(638):  at android.os.Handler.dispatchMessage(Handler.java:99)
10-19 11:45:08.575: E/AndroidRuntime(638):  at android.os.Looper.loop(Looper.java:137)
10-19 11:45:08.575: E/AndroidRuntime(638):  at android.app.ActivityThread.main(ActivityThread.java:5103)
10-19 11:45:08.575: E/AndroidRuntime(638):  at java.lang.reflect.Method.invokeNative(Native Method)
10-19 11:45:08.575: E/AndroidRuntime(638):  at java.lang.reflect.Method.invoke(Method.java:525)
10-19 11:45:08.575: E/AndroidRuntime(638):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
10-19 11:45:08.575: E/AndroidRuntime(638):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
10-19 11:45:08.575: E/AndroidRuntime(638):  at dalvik.system.NativeStart.main(Native Method)
10-19 11:45:10.905: I/Process(638): Sending signal. PID: 638 SIG: 9

问题是您的MainActivity类可能正在扩展com.google.android.maps.MapActivity。为了让系统能够找到此类,您需要做两件事:

首先确保您的项目在构建路径中包含了Android maps.jar。从Eclipse查找

Project > Properties > Android
然后选择一个适合你应用的“谷歌API”。通过检查以下内容,可以确认maps.jar位于构建路径上:

Project > Properties > Java Build Path > Libraries > Expand "Google Apis"
第二步浏览到清单文件,并确保已将uses library代码段嵌套在标记中,如下所示:

<manifest>
...
   <application ...>
      <uses-library android:name="com.google.android.maps" />
      ...
   </application>
</manifest>

...
...

愿原力与你同在

问题在于您的MainActivity类可能正在扩展com.google.android.maps.MapActivity。为了让系统能够找到此类,您需要做两件事:

首先确保您的项目在构建路径中包含了Android maps.jar。从Eclipse查找

Project > Properties > Android
然后选择一个适合你应用的“谷歌API”。通过检查以下内容,可以确认maps.jar位于构建路径上:

Project > Properties > Java Build Path > Libraries > Expand "Google Apis"
第二步浏览到清单文件,并确保已将uses library代码段嵌套在标记中,如下所示:

<manifest>
...
   <application ...>
      <uses-library android:name="com.google.android.maps" />
      ...
   </application>
</manifest>

...
...

愿原力与你同在

检查maps.jar是否两次包含在构建路径中。您应该只将其包含在项目的
libs/
文件夹中-然后它将出现在Java构建路径>库的“Android私有库”中-将其从所有其他位置(包括Android依赖项,如果有的话)的构建路径中删除


清理并重建

检查maps.jar是否两次包含在构建路径中。您应该只将其包含在项目的
libs/
文件夹中-然后它将出现在Java构建路径>库的“Android私有库”中-将其从所有其他位置(包括Android依赖项,如果有的话)的构建路径中删除


清理并重建

我认为您的代码是正确的


我会删除项目构建路径库选项卡中的maps.jar,然后您必须在Android项目属性中选择Google API。

我认为您的代码是正确的


我会删除项目构建路径库选项卡上的maps.jar,然后你必须在Android项目属性中选择Google API。

Thanx因为我意识到我没有像@Kalpesh Lakhani指出的那样选择Google API,所以决定从头开始,只是这次从Google play导入了lib项目在extras中的服务,然后在Project>Properties>Android>IsLibrary下,我引用了libproject。从Google API控制台获得了一个新密钥,添加了所需的所有权限,并在我的主xml下定义了一个新片段,名为


,运行了程序,只是地图显示了希望,因为我读了标签的位置,我不会有任何错误,谢谢你们。另外,我不需要添加外部JAR文件,希望在导出时有详细的解释,因为GoogleLib项目也显示为一个项目。

Thanx由于我意识到我没有像@Kalpesh Lakhani所指出的那样选择Google API,所以决定从头开始,只是这次在extras中从Google play services导入了lib项目,然后在project>Properties>Android>IsLibrary下我引用了libproject。从Google API控制台获得了一个新密钥,添加了所需的所有权限,并在我的主xml下定义了一个新片段,名为


,运行了程序,只是地图显示了希望,因为我读了标签的位置,我不会有任何错误,谢谢你们。另外,我不需要添加外部JAR文件,希望在导出时有详细的解释,因为GoogleLib项目也显示为一个项目。

你能发布logcat plz吗?我刚刚将它导出到一个txt文件中,在你的
Project>Properties>Android
Project>Properties>Java构建路径上查看我的编辑帖子详细信息,在Android下,唯一勾选的是Android 4.3。
在Java下有Android-support-v4.jar、google play services.jar、maps.jar、Android 4.3,android dependencies和android private librariestry使用sdk将其放入清单中可以发布logcat plz吗?我刚刚将其导出为txt文件,查看我的编辑文章详细信息,查看您的
Project>Properties>Android
Project>Properties>Java构建路径
在Android下,唯一勾选的是Android 4.3。
在Java下,有Android-support-v4.jar、google play services.jar、maps.jar、Android 4.3,android dependencies和android private librariestry使用sdk将其放入清单,然后在我的主xml中如何定义它?@Manny264你的意思是你实际上是如何查看地图的?请检查下面的答案我使用了从google play services导入的项目,并在我自己的项目中引用了它,然后在我的主xml中如何定义它定义它?@Manny264你的意思是你实际上是怎么看地图的?检查我下面的答案我使用了从google play services导入的项目,并在我自己的项目中引用了它,仅在2天内,它说仅在2天内