0

Я пытаюсь запустить базовый пример Google Maps API v2 от http://www.vogella.com/articles/AndroidGoogleMaps/article.html, но он продолжает сбой с сообщением об ошибке:Google Maps API v2

02-10 14:51:38.292: E/AndroidRuntime(898): FATAL EXCEPTION: main 
02-10 14:51:38.292: E/AndroidRuntime(898): java.lang.NoClassDefFoundError: com.google.android.gms.R$styleable 
02-10 14:51:38.292: E/AndroidRuntime(898): at com.google.android.gms.maps.GoogleMapOptions.createFromAttributes(Unknown Source) 
02-10 14:51:38.292: E/AndroidRuntime(898): at com.google.android.gms.maps.MapFragment.onInflate(Unknown Source) 
02-10 14:51:38.292: E/AndroidRuntime(898): at android.app.Activity.onCreateView(Activity.java:4716) 
02-10 14:51:38.292: E/AndroidRuntime(898): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:680) 
02-10 14:51:38.292: E/AndroidRuntime(898): at android.view.LayoutInflater.rInflate(LayoutInflater.java:746) 
02-10 14:51:38.292: E/AndroidRuntime(898): at android.view.LayoutInflater.inflate(LayoutInflater.java:489) 
02-10 14:51:38.292: E/AndroidRuntime(898): at android.view.LayoutInflater.inflate(LayoutInflater.java:396) 
02-10 14:51:38.292: E/AndroidRuntime(898): at android.view.LayoutInflater.inflate(LayoutInflater.java:352) 
02-10 14:51:38.292: E/AndroidRuntime(898): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:270) 
02-10 14:51:38.292: E/AndroidRuntime(898): at android.app.Activity.setContentView(Activity.java:1881) 
02-10 14:51:38.292: E/AndroidRuntime(898): at com.vogella.android.locationapi.maps.MainActivity.onCreate(MainActivity.java:23) 
02-10 14:51:38.292: E/AndroidRuntime(898): at android.app.Activity.performCreate(Activity.java:5104) 
02-10 14:51:38.292: E/AndroidRuntime(898): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080) 
02-10 14:51:38.292: E/AndroidRuntime(898): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144) 
02-10 14:51:38.292: E/AndroidRuntime(898): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230) 
02-10 14:51:38.292: E/AndroidRuntime(898): at android.app.ActivityThread.access$600(ActivityThread.java:141) 
02-10 14:51:38.292: E/AndroidRuntime(898): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234) 
02-10 14:51:38.292: E/AndroidRuntime(898): at android.os.Handler.dispatchMessage(Handler.java:99) 
02-10 14:51:38.292: E/AndroidRuntime(898): at android.os.Looper.loop(Looper.java:137) 
02-10 14:51:38.292: E/AndroidRuntime(898): at android.app.ActivityThread.main(ActivityThread.java:5039) 
02-10 14:51:38.292: E/AndroidRuntime(898): at java.lang.reflect.Method.invokeNative(Native Method) 
02-10 14:51:38.292: E/AndroidRuntime(898): at java.lang.reflect.Method.invoke(Method.java:511) 
02-10 14:51:38.292: E/AndroidRuntime(898): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
02-10 14:51:38.292: E/AndroidRuntime(898): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
02-10 14:51:38.292: E/AndroidRuntime(898): at dalvik.system.NativeStart.main(Native Method) 

мой код ...

манифеста:

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

    <uses-sdk 
     android:minSdkVersion="17" 
     android:targetSdkVersion="17" /> 

    <permission 
     android:name="com.example.mapdemo.permission.MAPS_RECEIVE" 
     android:protectionLevel="signature" /> 

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

    <uses-permission android:name="com.example.mapdemo.permission.MAPS_RECEIVE" /> 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" /> 
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 

    <application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 
     <activity 
      android:name="com.vogella.android.locationapi.maps.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="{tried both browser api key and android api keys here}" /> 
    </application> 

</manifest> 

расположение:

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

активность:

package com.vogella.android.locationapi.maps; 

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

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; 

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(); 
    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))); 

    // Move the camera instantly to hamburg with a zoom of 15. 
    map.moveCamera(CameraUpdateFactory.newLatLngZoom(HAMBURG, 15)); 

    // Zoom in, animating the camera. 
    map.animateCamera(CameraUpdateFactory.zoomTo(10), 2000, null); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.activity_main, menu); 
    return true; 
    } 

} 

из побежала на А с целевым Google API 17, он выходит из строя сразу.

+0

пожалуйста ... любая помощь? – 2013-02-10 18:17:40

ответ

0

Я заметил, что вы не добавили защиту для Служб Google Play, Google Maps V2 api требует, чтобы это выполнялось.

Возможно, проблема связана с тем, что службы Google Play не поддерживаются в AVD. Попробуйте запустить устройство.

может быть, это может помочь

Missing Google Play Services from AVD

https://stackoverflow.com/a/14282347/1788333

+0

Спасибо, я не уверен, что понимаю, что такое защита. Помимо проверки доступности игровых сервисов на AVD и попытке запустить на реальном устройстве, есть ли что-нибудь еще, что я должен сделать? – 2013-02-12 01:29:05

+1

, чтобы проверить, доступны ли сервисы Google Play на устройстве, поскольку он не установлен по умолчанию. [Здесь ссылка на страницу google] (http://developer.android.com/reference/com/) google/android/gms/common/GooglePlayServicesUtil.html # isGooglePlayServicesAvailable (android.content.Context)) - также я уверен, что вы уже, но дважды проверьте, что вы загрузили API сервисов Google Play от менеджера SDK – azza50

0

Вы должны расширить FragmentActivity чем активность.

Используйте это в своей деятельности: map = ((SupportMapFragment) getSupportFragmentManager(). FindFragmentById (R.id.map)). GetMap();

И в XML в фрагмент тега написать это:

класс = "com.google.android.gms.maps SupportMapFragment."

 Смежные вопросы

  • Нет связанных вопросов^_^