2013-07-19 37 views
1

我是Android新手,我正在嘗試開發包含Google地圖的Android應用程序。該應用在仿真器上運行良好,直到我決定將Google Play服務從修訂版本7更新到9爲止。模擬器上的「致命異常:主要」和「Google Play服務過期」

我現在遇到了之前遇到的相同錯誤(「Google Play服務已過期...」) ,加上「致命異常:主要」錯誤。以下是我在logcat中得到:

http://imageshack.us/a/img11/8117/y1mq.png

如果我讀的logcat正確,錯誤是在MapTabActivity但我不知道,如果錯誤是由谷歌遊戲服務被淘汰所致日期,或如果是別的東西......

更新谷歌遊戲服務之前,應用程序正在模擬器上與

  • 的Nexus 4設備
  • 的Android 4.2.2(API LVL 17 )
  • ARM CPU
  • 主機GPU選擇

我也不得不安裝com.android.vending.apk和com.google.android.gms.apk那是在這個其他職位推薦。

我還向清單中添加了必要的許可權,並申請了也包含在清單中的API密鑰。

任何人都可以幫助我嗎?這是MapTabActivity及其相應的XML。

MapTabActivity.java

package com.dissertation.closethedoordiss; 

import com.google.android.gms.maps.CameraUpdateFactory; 
import com.google.android.gms.maps.GoogleMap; 
import com.google.android.gms.maps.SupportMapFragment; 
import com.google.android.gms.maps.model.LatLng; 

import android.content.Intent; 
import android.os.Bundle; 
import android.support.v4.app.FragmentActivity; 
import android.view.View; 

public class MapTabActivity extends FragmentActivity { 

private GoogleMap mMap; 
private static final LatLng BRISTOL = new LatLng(51.455083,-2.586903); 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_maptab); 


    mMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.mapView)).getMap(); 
    mMap.setMapType(GoogleMap.MAP_TYPE_NORMAL); 

    mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(BRISTOL, 13)); 
} 

public void onClick_addretailer (View view) { 
    startActivity(new Intent("com.closethedoordiss.AddRetailerActivity")); 
} 
} 

activity_maptab.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:map="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <fragment 
     android:name="com.google.android.gms.maps.SupportMapFragment" 
     android:id="@+id/mapView" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 



    <ImageButton 
     android:id="@+id/imageButton1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:src="@android:drawable/ic_menu_add" 
     android:onClick="onClick_addretailer" 
     android:contentDescription="@string/add_button" /> 

</RelativeLayout> 

預先感謝提供任何幫助。

+0

您確定要安裝軟件包(自動售貨機,gms)嗎?這看起來像是播放服務中的一個可能的可恢復錯誤,請參閱http://developer.android.com/reference/com/google/android/gms/common/GooglePlayServicesUtil.html#isGooglePlayServicesAvailable(android.content.Context) –

+0

我最初使用這裏提到的包[鏈接](http://stackoverflow.com/questions/14040185/running-google-maps-v2-on-android-emulator/17036337#17036337)。我也嘗試安裝,我認爲是更新的包,但我不知道他們是否......這個問題仍然存在。 – PierreM

+0

找出需要哪個版本(與您的代碼鏈接到哪個版本),並嘗試查看Android SDK的目錄(可能在某些地方的額外/谷歌播放服務) –

回答

0

我已經有過這個問題多次,我找到了一些方法來解決它。您的應用所參考的Play服務最有可能與您在設備上的內容不匹配,在這種情況下,它是模擬器。這可能是因爲仿真器上未安裝Google Play(或Google Play服務)。請查閱this SO post瞭解更多信息。如果已安裝,您可能需要更新它。如果內置更新不起作用,您可以通過從頭安裝來更新它。

如果您使用Google Play服務作爲圖書館項目,則可能需要更新您的Google Play服務庫。這是我做的:

  • 打開SDK管理器,看看是否有更新的谷歌遊戲服務
  • 如果有,下載
  • 在Eclipse中,刪除舊的播放服務項目,並導入新作爲參考一個
  • 重新添加新項目

如果你不使用谷歌Play服務,因爲庫項目,或者你已經alaready更新,然後不顧一切我上面說的: )

一旦您的設備/仿真器和Eclipse項目正在使用Play服務庫的相同更新版本,那麼您應該很好去!

+0

我正在使用Google Play服務作爲庫項目,並且已經完成了您在此處提到的步驟(導入並引用它)。一旦我實際更新了Google Play服務(至版本9),錯誤就開始顯示。我檢查了模擬器並安裝了Google Play服務,因爲它們出現在「設置」>「應用」菜單中......我不確定這是否相關,但如果我打開Goog​​le Play商店,則會出現一個進度對話框,然後它會自行關閉... – PierreM

+0

嘗試更新模擬器上的Google Play – crocboy

+0

我試着通過按下顯示的「更新」按鈕而不是地圖來更新它,但沒有任何反應。 – PierreM

1

我發現運行Google Maps Android API v2的唯一方法是在物理設備上運行。

我正在用Android 4.0.4在三星Galaxy S Duos上運行我的應用程序,並且地圖顯示正確。在嘗試幾種解決方案(包括測試多個模擬器配置並安裝不同的apks)之後,當涉及在模擬器上使用Google maps API v2時,我相信克服「Google Play服務已過時」的最簡單方法是在物理設備上開發/測試。

希望這會有所幫助。

相關問題