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

问题描述:

我跟着关于两个来自vogella的教程和一些看起来类似的教程......非常相似但无济于事。我打开我的Nexus 7的应用程序,它只是崩溃“不幸的是MyMapView已停止工作”上launch.This是明显的:我的谷歌地图android应用程序不断崩溃

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
tools:context=".MainActivity" > 

<fragment 
    android:id="@+id/map" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    class="com.google.android.gms.maps.MapFragment" /> 

</RelativeLayout> 



<?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> 


我的主要布局紧随其后最后我的java类:

package com.macmozart.mymapview; 

import android.app.Activity; 
import android.os.Bundle; 

import com.google.android.gms.maps.CameraUpdateFactory; 
import com.google.android.gms.maps.GoogleMap; 
import com.google.android.gms.maps.MapFragment; 
import com.google.android.gms.maps.model.BitmapDescriptorFactory; 
import com.google.android.gms.maps.model.LatLng; 
import com.google.android.gms.maps.model.Marker; 
import com.google.android.gms.maps.model.MarkerOptions; 
import com.google.android.maps.*; 

public class MainActivity extends Activity { 

    static final LatLng HAMBURG = new LatLng(53.558, 9.927); 
    static final LatLng KIEL = new LatLng(53.551, 9.993); 
    private GoogleMap map; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)) 
       .getMap(); 

     if (map != null) { 
      Marker hamburg = map.addMarker(new MarkerOptions() 
        .position(HAMBURG).title("Hamburg")); 
      Marker kiel = map.addMarker(new MarkerOptions() 
        .position(KIEL) 
        .title("Kiel") 
        .snippet("Kiel is cool") 
        .icon(BitmapDescriptorFactory 
          .fromResource(R.drawable.ic_launcher))); 
      map.moveCamera(CameraUpdateFactory.newLatLngZoom(HAMBURG, 15)); 
      // Zoom in, animating the camera. 
      map.animateCamera(CameraUpdateFactory.zoomTo(10), 2000, null); 

     } 

    } 
} 

任何想法,我在做什么WRO NG我真的需要这个工作

编辑:出口的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 
+1

可以发布logcat plz吗? –

+0

我刚刚将它导出到一个txt文件,检查我的编辑 – Manny265

+0

您的'项目>属性> Android'和'项目>属性> Java构建路径' –

Thanx为所有帮助我意识到我没有选择谷歌API作为@Kalpesh Lakhani指出,所以决定从头开始,只是这次从google play服务中导入了lib项目,然后在项目>属性> Android> IsLibrary我引用了libproject。从谷歌API控制台得到一个新的密钥,添加所需的所有权限,并在我的主要xml下定义了一个新的碎片作为
<fragment android:id="@+id/map" android:layout_below="@+id/text1" android:name="com.google.android.gms.maps.MapFragment" android:layout_width="match_parent" android:layout_height="match_parent" />
,Ran程序,只是地图显示有希望,因为我阅读标签位置我不会有任何错误,但谢谢你们。附:我并不需要添加外部JAR文件,希望当我出口时有一个详细的解释,因为google-lib项目也显示为一个项目。 Reference video for this code,helps ALOT!!

+0

中引用它仅在2天内说 – Manny265

的问题是,您的MainActivity类别很可能延长com.google.android。 maps.MapActivity。为了系统能够找到这个类,你需要做两件事:

首先确保你的项目在你的构建路径中包含Android maps.jar。从Eclipse发现

Project > Properties > Android 

然后选择一个适合您的应用程序的“Google API”。您可以确认maps.jar是您的构建路径上通过检查:

Project > Properties > Java Build Path > Libraries > Expand "Google Apis" 

其次,浏览到您的清单文件,并确保您有用途库片段嵌套在标签内,如下所示:

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

愿力量与你同在!

+0

然后在我的主要xml中,我该如何定义它? – Manny265

+0

@ Manny264你的意思是你怎么看到地图? – Katana24

+0

查看我的答案,下面我使用了谷歌播放服务的一个导入项目,并在我自己的项目 – Manny265

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

清洁和重建

我认为你的代码是正确的。

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