2013-10-19 137 views
0

我跟着關於兩個來自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構建路徑' –

回答

1

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

1

的問題是,您的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

1

檢查您的構建路徑中是否包含maps.jar兩次。您只應將其包含在項目的libs/文件夾中 - 然後它將在Java Build Path> Libraries中的「Android專用庫」中出現 - 從所有其他位置(包括Android依賴項)中刪除它在構建路徑中

清潔和重建

1

我認爲你的代碼是正確的。

我會移除項目構建路徑的庫選項卡的maps.jar,然後您必須在Android項目屬性中選擇Google Apis。

相關問題