0

我會在我的模擬器上獲得谷歌地圖。 我按照 上的說明運行應用程序時出現錯誤消息:不幸的是DemoGoogleMapsV2已停止。不幸的谷歌地圖已停止

我的AndroidManifest.xml:

<uses-sdk 
android:minSdkVersion="8" 
android:targetSdkVersion="17" /> 
<permission android:name="com.demogooglemapsv2.permission.MAPS_RECEIVE" 
android:protectionLevel="signature"/> 
<uses-permission android:name="com.demogooglemapsv2.permission.MAPS_RECEIVE" /> 

<uses-permission android:name="android.permission.INTERNET"/> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
<!-- The following two permissions are not required to use 
Google Maps Android API, but are recommended. --> 
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> 

<uses-feature 
android:glEsVersion="0x00020000" 
android:required="true"/> 

<application 
android:allowBackup="true" 
android:icon="@drawable/ic_launcher" 
android:label="@string/app_name" 
android:theme="@style/AppTheme" > 

<meta-data 
android:name="com.google.android.maps.v2.API_KEY" 
android:value="API_KEY"/> 

<activity 
android:name=".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> 
</application> 

</manifest> 

我activity_main.xml中:

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

我MainActivity.java:

package com.demogooglemapsv2; 
import android.app.Activity; 
import android.os.Bundle; 

public class MainActivity extends Activity { 

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

日誌錯誤:

09-04 17:43:51.170: E/Trace(1477): error opening trace file: No such file or directory (2) 09-04 17:43:53.449: E/AndroidRuntime(1477): FATAL EXCEPTION: main 09-04 17:43:53.449: E/AndroidRuntime(1477): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.demogooglemapsv2/com.demogooglemapsv2.MainActivity}: android.view.InflateException: Binary XML file line #11: Error inflating class fragment 09-04 17:43:53.449: E/AndroidRuntime(1477): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180) 09-04 17:43:53.449: E/AndroidRuntime(1477): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230) 09-04 17:43:53.449: E/AndroidRuntime(1477): at android.app.ActivityThread.access$600(ActivityThread.java:141) 09-04 17:43:53.449: E/AndroidRuntime(1477): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234) 09-04 17:43:53.449: E/AndroidRuntime(1477): at android.os.Handler.dispatchMessage(Handler.java:99) 09-04 17:43:53.449: E/AndroidRuntime(1477): at android.os.Looper.loop(Looper.java:137) 09-04 17:43:53.449: E/AndroidRuntime(1477): at android.app.ActivityThread.main(ActivityThread.java:5041) 09-04 17:43:53.449: E/AndroidRuntime(1477): at java.lang.reflect.Method.invokeNative(Native Method) 09-04 17:43:53.449: E/AndroidRuntime(1477): at java.lang.reflect.Method.invoke(Method.java:511) 09-04 17:43:53.449: E/AndroidRuntime(1477): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 09-04 17:43:53.449: E/AndroidRuntime(1477): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 09-04 17:43:53.449: E/AndroidRuntime(1477): at dalvik.system.NativeStart.main(Native Method) 09-04 17:43:53.449: E/AndroidRuntime(1477): Caused by: android.view.InflateException: Binary XML file line #11: Error inflating class fragment 09-04 17:43:53.449: E/AndroidRuntime(1477): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704) 09-04 17:43:53.449: E/AndroidRuntime(1477): at android.view.LayoutInflater.rInflate(LayoutInflater.java:746) 09-04 17:43:53.449: E/AndroidRuntime(1477): at android.view.LayoutInflater.inflate(LayoutInflater.java:489) 09-04 17:43:53.449: E/AndroidRuntime(1477): at android.view.LayoutInflater.inflate(LayoutInflater.java:396) 09-04 17:43:53.449: E/AndroidRuntime(1477): at android.view.LayoutInflater.inflate(LayoutInflater.java:352) 09-04 17:43:53.449: E/AndroidRuntime(1477): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:270) 09-04 17:43:53.449: E/AndroidRuntime(1477): at android.app.Activity.setContentView(Activity.java:1881) 09-04 17:43:53.449: E/AndroidRuntime(1477): at com.demogooglemapsv2.MainActivity.onCreate(MainActivity.java:17) 09-04 17:43:53.449: E/AndroidRuntime(1477): at android.app.Activity.performCreate(Activity.java:5104) 09-04 17:43:53.449: E/AndroidRuntime(1477): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080) 09-04 17:43:53.449: E/AndroidRuntime(1477): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144) 09-04 17:43:53.449: E/AndroidRuntime(1477): ... 11 more 09-04 17:43:53.449: E/AndroidRuntime(1477): Caused by: java.lang.IllegalStateException: The meta-data tag in your app's AndroidManifest.xml does not have the right value. Expected 5089000 but found 0. You must have the following declaration within the element: 09-04 17:43:53.449: E/AndroidRuntime(1477): at com.google.android.gms.common.GooglePlayServicesUtil.A(Unknown Source) 09-04 17:43:53.449: E/AndroidRuntime(1477): at com.google.android.gms.common.GooglePlayServicesUtil.isGooglePlayServicesAvailable(Unknown Source) 09-04 17:43:53.449: E/AndroidRuntime(1477): at com.google.android.gms.maps.internal.u.I(Unknown Source) 09-04 17:43:53.449: E/AndroidRuntime(1477): at com.google.android.gms.maps.internal.u.H(Unknown Source) 09-04 17:43:53.449: E/AndroidRuntime(1477): at com.google.android.gms.maps.MapsInitializer.initialize(Unknown Source) 09-04 17:43:53.449: E/AndroidRuntime(1477): at com.google.android.gms.maps.SupportMapFragment$b.jz(Unknown Source) 09-04 17:43:53.449: E/AndroidRuntime(1477): at com.google.android.gms.maps.SupportMapFragment$b.a(Unknown Source) 09-04 17:43:53.449: E/AndroidRuntime(1477): at com.google.android.gms.dynamic.a.a(Unknown Source) 09-04 17:43:53.449: E/AndroidRuntime(1477): at com.google.android.gms.dynamic.a.onInflate(Unknown Source) 09-04 17:43:53.449: E/AndroidRuntime(1477): at com.google.android.gms.maps.SupportMapFragment.onInflate(Unknown Source) 09-04 17:43:53.449: E/AndroidRuntime(1477): at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:291) 09-04 17:43:53.449: E/AndroidRuntime(1477): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:676) 09-04 17:43:53.449: E/AndroidRuntime(1477): ... 21 more

+1

顯示完整的錯誤日誌將 – 2014-09-03 09:27:01

+0

http://stackoverflow.com/questions/14040185/running-google-maps-v2-on-the-android-emulator – 2014-09-03 09:27:30

+0

API_KEY清單中未填寫在 – 2014-09-03 09:27:39

回答

0

將活動替換爲FragmentActivity,確保您輸入了正確的API密鑰。

而代替 com.google.android.gms.maps.MapFragment 使用 com.google.android.gms.maps.SupportMapFragment

確保谷歌Play服務已安裝在設備上。這就是爲什麼嘗試在真實設備上運行應用程序而不是在仿真器上。

0

添加以下activity_main.xml中:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    xmlns:map="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/LinearLayout1" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 

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

添加此標籤在你menifest文件

<meta-data 
     android:name="com.google.android.gms.version" 
     android:value="@integer/google_play_services_version" /> 
0

希望你的項目和google-play-services_lib都處於同一workspace,你已經增加一條,作爲library項目在你的應用程序。如果你的API-Key沒問題,那麼你需要像這樣改變。

1.添加本meta-dataapplication標籤在manifest

<meta-data 
    android:name="com.google.android.gms.version" 
    android:value="@integer/google_play_services_version" /> 

2. minSdkVersion="8"你應該使用SupportMapFragment所以activity_main.xml看起來像這樣

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

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

</RelativeLayout> 

3.不要Activity你應該擴展FragmentActivity並使用SupportFragmentManager()

public class MainActivity extends FragmentActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     SupportMapFragment fm = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map); 
     GoogleMap mMap = fm.getMap(); 
    } 
} 

Try to run it on real device or Genymotion's emulator after installing google-play-service. Otherwise you will face a crash