No se puede crear una instancia de android.gms.maps.MapFragment


82

Intento hacer una demostración con google maps android v2 con una actividad muy simple, simplemente copie el código de la página de Google: https://developers.google.com/maps/documentation/android/start#adding_the_api_key_to_your_application

para actividad:

package com.example.mapdemo;

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.main);
    }
}

para el diseño:

<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
  android:id="@+id/map"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  class="com.google.android.gms.maps.MapFragment"/>

Solicité una clave api de acuerdo con la página y modifiqué mi archivo androidmanifest.xml, así:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.wenhai.driverschool"
    android:versionCode="1"
    android:versionName="1.0" >

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

    <uses-permission android:name="android.permission.INTERNET" />

    <!-- add for map2 -->
    <permission
        android:name="com.example.mapdemo.permission.MAPS_RECEIVE"
        android:protectionLevel="signature" />

    <uses-permission android:name="com.example.mapdemo.permission.MAPS_RECEIVE" />
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
    <!-- External storage for caching. -->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

    <!-- Maps API needs OpenGL ES 2.0. -->
    <uses-feature
        android:glEsVersion="0x00020000"
        android:required="true" />

    <application
        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="AIzaSyDVAF4WaVSVRDKJx87It8OSFP5txQcPabc" />

        <activity
            android:name=".MainActivity"
            android:label="@string/title_activity_main" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

También hago referencia a mi aplicación a google-play-services_lib en eclipse.

pero cada vez, informe de error en logcat como este:

2-05 16:22:53.609: E/AndroidRuntime(21623): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.wenhai.driverschool/com.wenhai.driverschool.MainActivity}: android.view.InflateException: Binary XML file line #2: Error inflating class fragment
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1967)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1992)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.app.ActivityThread.access$600(ActivityThread.java:127)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1158)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.os.Handler.dispatchMessage(Handler.java:99)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.os.Looper.loop(Looper.java:137)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.app.ActivityThread.main(ActivityThread.java:4441)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at java.lang.reflect.Method.invokeNative(Native Method)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at java.lang.reflect.Method.invoke(Method.java:511)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:823)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:590)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at dalvik.system.NativeStart.main(Native Method)
12-05 16:22:53.609: E/AndroidRuntime(21623): Caused by: android.view.InflateException: Binary XML file line #2: Error inflating class fragment
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:697)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.view.LayoutInflater.inflate(LayoutInflater.java:466)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:255)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.app.Activity.setContentView(Activity.java:1835)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at com.wenhai.driverschool.MainActivity.onCreate(MainActivity.java:11)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.app.Activity.performCreate(Activity.java:4465)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1931)
12-05 16:22:53.609: E/AndroidRuntime(21623):    ... 11 more
12-05 16:22:53.609: E/AndroidRuntime(21623): Caused by: android.app.Fragment$InstantiationException: Unable to instantiate fragment com.google.android.gms.maps.MapFragment: make sure class name exists, is public, and has an empty constructor that is public
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.app.Fragment.instantiate(Fragment.java:581)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.app.Fragment.instantiate(Fragment.java:549)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.app.Activity.onCreateView(Activity.java:4235)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:673)
12-05 16:22:53.609: E/AndroidRuntime(21623):    ... 20 more
12-05 16:22:53.609: E/AndroidRuntime(21623): Caused by: java.lang.ClassNotFoundException: com.google.android.gms.maps.MapFragment
12-05 16:22:53.609: E/AndroidRuntime(21623):    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.app.Fragment.instantiate(Fragment.java:571)
12-05 16:22:53.609: E/AndroidRuntime(21623):    ... 23 more

No sé la razón de esto.

Si agrego google-play-services.jar a mi proyecto, informará otro error:

12-05 16:34:23.269: E/AndroidRuntime(22638): FATAL EXCEPTION: main
12-05 16:34:23.269: E/AndroidRuntime(22638): java.lang.NoClassDefFoundError: com.google.android.gms.R$styleable
12-05 16:34:23.269: E/AndroidRuntime(22638):    at com.google.android.gms.maps.GoogleMapOptions.createFromAttributes(Unknown Source)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at com.google.android.gms.maps.MapFragment.onInflate(Unknown Source)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at android.app.Activity.onCreateView(Activity.java:4242)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:673)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at android.view.LayoutInflater.inflate(LayoutInflater.java:466)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:255)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at android.app.Activity.setContentView(Activity.java:1835)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at com.wenhai.driverschool.MainActivity.onCreate(MainActivity.java:11)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at android.app.Activity.performCreate(Activity.java:4465)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1931)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1992)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at android.app.ActivityThread.access$600(ActivityThread.java:127)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1158)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at android.os.Handler.dispatchMessage(Handler.java:99)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at android.os.Looper.loop(Looper.java:137)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at android.app.ActivityThread.main(ActivityThread.java:4441)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at java.lang.reflect.Method.invokeNative(Native Method)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at java.lang.reflect.Method.invoke(Method.java:511)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:823)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:590)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at dalvik.system.NativeStart.main(Native Method)

¿Alguien me puede ayudar con esto?


2
Recibo el mismo error con MapView. Agregué la biblioteca e hice todo como se describe en esta página developers.google.com/maps/documentation/android/start pero todo esto fue inútil para mí.
jumper0k

1
Mismo error ... cualquier solución ...
nilkash

1
Tengo el mismo error y todavía no pude encontrar una buena solución :(
Ricardo Otero

Para ver estos pasos, supongo que aún no se ha resuelto techhomeblog.wordpress.com/2013/02/23/…
Tofeeq Ahmad

Intente hacer clic con el botón derecho en su proyecto en Eclipse, seleccione Herramientas de Android> Agregar biblioteca de soporte. En mi caso, fue una versión obsoleta tomada de ActionBarSherlock.
IgorGanapolsky

Respuestas:


86

En IntelliJ IDEA (actualizado para IntelliJ 12):

  1. Cree un archivo que ~/android-sdk/extras/google/google_play_services/libproject/google-play-services_lib/src/dummy.javacontenga class dummy {}.
  2. Archivo-> Módulo de importación-> ~/android-sdk/extras/google/google_play_services/libproject/google-play-services_lib
  3. Crear módulo a partir de fuentes existentes
  4. Siguiente-> Siguiente-> Siguiente-> Siguiente-> Finalizar
  5. Archivo-> Estructura del proyecto-> Módulos-> YourApp
  6. +-> Dependencia del módulo-> Google-play-services_lib (el +botón está en la esquina superior derecha del cuadro de diálogo).
  7. +-> Frascos o directorios->~/android-sdk/extras/google/google_play_services/libproject/google-play-services_lib/libs/google-play-services.jar
  8. Utilice las flechas up/ downpara desplazarse <Module source>al final de la lista.

Puede eliminarlo dummy.javasi lo desea.

Editar: Después de usar esto por un tiempo, descubrí que hay un pequeño defecto / error. IDEA a veces se quejará de que no puede abrir un .imlarchivo de proyecto en el google-play-services_libdirectorio, a pesar de que nunca le dijo que había un proyecto allí. Si eso sucede, reconstruir el proyecto resuelve el problema, al menos hasta que vuelva.


Funciona para mi. ¡Gracias!
kingtim

3
hola, no puedo encontrar la File > Import Moduleopción en mi Eclipse IDE. Por favor ayúdenme ...
Rahmathullah M

Esto es para el IDE superior "IntelliJ IDEA".
Timmmm

2
¡Gracias por tu respuesta! ¡Pero fue suficiente para mí agregar el módulo Y la dependencia de jar en el proyecto y todo funcionó!
lomza

3
Ya no es necesario agregar el archivo ficticio, ya que la biblioteca de servicios de Google Play se ha actualizado con un "archivo ficticio oficial" para admitir "algunos IDE" (es decir, hicieron una corrección para IntelliJ y Android Studio).
Guardius

33

Actualizar

Siga los fragmentos de código de Commonsware MapV2 para comprender mejor.

(Está presente en la edición Omnibus)

https://github.com/commonsguy/cw-omnibus/tree/master/MapsV2

El siguiente fragmento está funcionando bien en mi extremo. Elijo usar SupportMapFragment.

No olvide agregar google-play-services.jar a su proyecto.

MainActivity.java

package com.example.newmapview;

import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import com.google.android.gms.maps.SupportMapFragment;

public class MainActivity extends FragmentActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        SupportMapFragment fragment = new SupportMapFragment();
        getSupportFragmentManager().beginTransaction()
                .add(android.R.id.content, fragment).commit();
    }
}

manifest.xml

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

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

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

    <uses-permission android:name="com.example.newmapview.permission.MAPS_RECEIVE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <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" >
        <activity
            android:name="com.example.newmapview.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="XXXXX" />
    </application>

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

</manifest>

Aqui esta el resultado

ingrese la descripción de la imagen aquí Espero que esto ayude.


hola, Vipul Shah, gracias. Me encanta el mensaje de concole: [2012-12-06 10:20:26 - google-play-services_lib] ¡No se pudo encontrar google-play-services_lib.apk! No sé si esta apk que falta conduce a mi error. ¿Puedes decirme cómo hacer referencia a google-play-services.jar? simplemente agréguelo como el enlace de abajo: developer.android.com/intl/zh-CN/tools/projects/… . o agréguelo en eclipse como se muestra a continuación: Propiedades-> Java Build Path-> Proyectos, agregue el proyecto google-play-services_lib. cual de tu lado Gracias.
mmm 2006

@ mmm2006 Me temo que podría estar ejecutando esta aplicación en el emulador de Android. No estoy seguro, pero es posible que se enfrente a este error porque no hay una aplicación de Play Store en el emulador. Pruébelo en el dispositivo real.
Vipul

De hecho, lo ejecuto en mi teléfono. un teléfono sony.
mmm2006

Hola Vipul, ¿puedes decirme cómo puedo mostrar mis marcadores en el mapa usando MapFragment? Tengo una lista de latitudes y longitudes, quiero mostrarlas en el mapa, probé MapView pero no funcionó para mí, así que no puedo usar ItemizedOverlay, MapFragment funcionó, entonces, cómo mostrar múltiples marcadores en MapFragment. Si es posible, proporcione un enlace que tenga un código de trabajo.
Shrikant

@VipulShah: eres rock. ¿Puedes decirme por qué viene este error? Porque antes de que funcione, he desarrollado algunos tutotiales ---> dj-android.blogspot.in/2013/02/… ahora el mismo código no funciona.
Dhaval Parmar

23

Simplemente intente reemplazar su diseño con:

<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
      android:id="@+id/map"
       android:name="com.google.android.gms.maps.SupportMapFragment"
       android:layout_width="wrap_content"
       android:layout_height="match_parent" />

¡Debe usar SupportMapFragment para API menores de 11 años!

Aurel


3
lo siento, pero no puede funcionar demasiado en mi lugar. informe de error esta vez: Causado por: android.app.Fragment $ InstantiationException: No se puede instanciar el fragmento com.google.android.gms.maps.SupportMapFragment: asegúrese de que el nombre de la clase exista, sea público y tenga un constructor vacío que sea público. Puedo encontrar SupportMapFragment en jar, pero no funciona. No sé la razón.
mmm 2006

Hum, parece que necesitas hacer algo así: 1. Descarga el SDK de Google Play Services en el Administrador de SDK de Android. 2. Importe la biblioteca del proyecto en Eclipse. 3. Agregue la biblioteca a su proyecto. 4. Asegúrese de tener android-support-v4.jar en su proyecto (también disponible en Android SDK Manager). 5. Cree un fragmento y agregue el nombre ('class = "com.google.android.gms.maps.MapFragment" />' para SDK> = 11 y 'class = "com.google.android.gms.maps.MapFragment "/> 'para SDK <11). 6. No olvide probar el código de muestra en un dispositivo (¡su aplicación necesita Google Play!)
Aurel

ok, encontré que debo seguir esta guía para referir el servicio de google play. developer.android.com/intl/zh-CN/tools/projects/… . pero el ejemplo proporcionado por Google ya puede funcionar. :(
mmm2006

¿Alguna idea de cuál es el Equivalente de Vista al Framgament para ponerlo dentro del archivo xml de fragmentos?
Harsha MV

1
@ mmm2006: necesita extender "FragmentActivity" y no "Activity", entonces debería funcionar y no arrojará una excepción ..
Veer

17

Enfrenté el mismo problema y me tomó dos días encontrar una solución que funcionara para mí:

  1. Eliminar el proyecto google-play-services_lib(clic derecho en el proyecto eliminar)
  2. Elimina el proyecto que contiene la demostración de mapas de Google ( MainActivityen mi caso) si tienes uno
  3. Copie el proyecto google-play-services_lib (extras \ google \ google_play_services \ libproject \ google-play-services_lib) en su espacio de trabajo y luego impórtelo como proyecto general (Archivo-> importar-> proyectos existentes en el espacio de trabajo)
  4. Haga clic derecho en su proyecto (en el que desea cargar el mapa) -> Android -> agregar (debajo de la biblioteca) google-play-services_lib

Debería ver algo como esto :

Observe la

Nota: No debe tener algo como esto (el proyecto debe ser referido desde su espacio de trabajo):

ingrese la descripción de la imagen aquí

Creo que el problema es que los proyectos de remolque hacen referencia a la misma biblioteca


Estaba agregando los servicios de Google Play como una biblioteca de ruta de compilación de Java, pero era necesario agregarlo en Android / Library
marimaf

10

prueba esto

http://developer.android.com/tools/projects/projects-eclipse.html#ReferencingLibraryProject

Acabo de agregar el proyecto de servicios de Google y agregué una referencia en la propiedad de mi proyecto-> Android


2
Esta fue la solución crítica para mí, ninguna de las otras respuestas anteriores ayudó. La diferencia aquí es bastante sutil: lo agregué como un proyecto dependiente a través de "Java Build Path", cuando en realidad debería haberlo hecho a través del menú "Android". Agregué esa información a una de mis otras respuestas: stackoverflow.com/questions/13733911/…
Dan J

8
  1. Por ahora, la demostración puede funcionar siga este enlace :
  2. Por ejemplo, demo, también puede funcionar:

Agregue dos jar en el directorio libs en su proyecto. Siga la siguiente información. En particular, creo que necesitas:

  • Importe la fuente real para el proyecto "google-play-services_lib" y vincúlela como una biblioteca de Android.
    • Haga esto a través de Proyecto -> Propiedades -> Android -> Biblioteca, Agregar -> google-play-services_lib (puede hacer clic derecho en su proyecto y elegir Propiedades, luego seleccionar Android).
    • No lo agregue como un Proyecto dependiente a través de la "Ruta de compilación de Java" para su proyecto, eso no funcionó para mí.
  • Agrega google-play-services.jar y android-support-v4.jar en una carpeta "libs" en el proyecto de muestra y agrégalos como "JAR externos externos" en "Ruta de compilación -> Configurar ruta de compilación -> Bibliotecas". .

Descubrí que este segundo paso era necesario ya que estaba obteniendo exactamente el mismo error que usted al intentar usar el código de muestra. El primer paso fue necesario para evitar un NoClassDefFoundError en com.google.android.gms.R $ styleable en mi proyecto real.

También necesitaba hacer una compilación limpia y desinstalar la aplicación del dispositivo (de un intento de prueba anterior) antes de que funcionara el código de muestra.

muchas gracias tu ayuda.


3

Quizás debes resaltar esto:

Nota: Los servicios de Google Play no son compatibles con el emulador de Android; para desarrollar utilizando las API, debe proporcionar un dispositivo de desarrollo, como un teléfono o tableta Android.

http://developer.android.com/google/play-services/setup.html

Debe proporcionar un dispositivo de desarrollo físico en el que pueda ejecutar y depurar su aplicación. No utilice el emulador. No funcionará.


3
¡DIOS MIO! ¿Por qué esta nota es tan pequeña en la página principal y no muy roja en todas las páginas? Acabo de f * ed día casi todo tratando de conseguir que la ejecución !!!!
shmoula

Los servicios de Play ahora están disponibles en emuladores que ejecutan Android v4.2.2 o superior.
Brian White

2

En tu MainActivity(o en cada actividad que quieras poner el mapa v2) debes extender FragmentActivityo Activitybien quieres usar SupportMapFragmento simplemente MapFragment. Utilice la MapFragmentclase solo si tiene como objetivo API 12 y superior. De lo contrario, utilice SupportMapFragment. Es una diferencia sutil pero comete el error.


2

Como el mapa de Google ahora está incluido en Fragmentos, amplíe su actividad desde FragmetActivity no solo Actividad y asegúrese de que si usa " supporrtMapFragment ", entonces está importando Fragmento solo desde el paquete de soporte .


Google realmente debería corregir el ejemplo básico para usar SupportMapFragment. No funciona sin él ...
Muzikant

1

En mi proyecto Intellij Idea tuve que agregar ambos: google-play-services_lib y google-play-services.jar al proyecto. Y en el proyecto google-play-services_lib agregue también google-play-services.jar. Después de eso, si hizo todas las cosas que se describen aquí , bien, su aplicación debería estar funcionando.


¿Qué categoría usa para el directorio (clases, directorio jar, fuentes, etc.)?
Timmmm

1
En Intellij Idea estoy agregando google-play-services_lib como un módulo. Es más, Intellij Idea no lo reconoce como un módulo, porque la carpeta src está vacía. Debe agregar un archivo java con cualquier código en la carpeta src, luego cree un módulo a partir de fuentes existentes y agréguelo al proyecto en la estructura del proyecto. Luego borre el archivo java.
jumper0k

1

Fue un poco difícil porque era diferente en la API anterior, pero encontré una solución. Google dice qué hacer aquí ; de acuerdo con la pregunta necesitamos com.google.android.gmsclases por lo que es necesario configurar el google play services, que es solo una biblioteca que tenemos que agregar a nuestro proyecto como este enlace . Es muy importante importar la copia de la biblioteca del proyecto, google-play-services_libno la que está en la carpeta sdk. Una vez hecho esto, el tutorial de Google funciona perfectamente.


también es importante también qué api está utilizando, api 10 o menos necesita soporte de la biblioteca developer.android.com/tools/extras/support-library.html ¿ cuál es exactamente su error?
joseph.dev89

1

Aparte de muchas de las cosas mencionadas anteriormente, para mí era importante marcar el .jar también en Order y Export. Por lo que puedo decir, no se suele mencionar y para mí fue crucial.

Marque la biblioteca en Order and Export



1

Agregue esta dependencia en build.gradle

compile 'com.google.android.gms:play-services:6.5.87'

Ahora esto funciona

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

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

0

Para encargarse de las importaciones relacionadas con Drive, necesitará algunos frascos del Google Drive SDK . Hay algunos grandes, por lo que es posible que desee agregarlos individualmente para adaptarse a su aplicación.

Si eso no resuelve el com.google.android.gms.* imports,the Google Play Services add-on needs to be installed (from Extras -> Google Play Services in the SDK Manager) and google-play-services.jar needs to be added to your build path.

EDITAR:

En este caso, se necesitaron los siguientes frascos:

google-api-services-drive-v2-rev1-1.7.2-beta.jar

google-http-client-1.10.3-beta.jar

google-http-client-android2-1.10.3-beta.jar

google-oauth-client-1.10.1-beta.jar

google-api-client-android2-1.10.3-beta.jar

google-api-client-1.10.3-beta.jar



0

¡¡No olvides construir el google-play-services_lib !! Es por eso que muestra el "No se pudo encontrar google-play .... apk". Para mí, en Eclipse, no se necesitaban otros trucos, sino para hacer referencia al proyecto desde el submenú de Android, no desde la ruta de compilación de Java, las referencias del proyecto o cualquier otra cosa. Sin frascos colocados manualmente, no se necesitaba nada para mí.


0

En Eclipse, es necesario crear un proyecto separado para los servicios de Google Play y hacer referencia a él como una biblioteca de su proyecto de Android en lugar de simplemente agregarle el jar. En mi computadora, importé el proyecto Eclipse de Google Play Services directamente desde D: \ adt-bundle-windows-x86-20130219 \ sdk \ extras \ google \ google_play_services \ libproject \ google-play-services_lib y lo configuré en el proyecto Lib, así que podría hacer referencia a él desde mi proyecto de Android.


0

En el mismo tutorial se indica que

Tenga en cuenta que el código siguiente solo es útil para probar su configuración en una aplicación dirigida a la API de Android 12 o posterior

Simplemente cambie su versión mínima de SDK a 12 y funcionará

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

Haven ya ha probado la solución alternativa de Aurel para versiones anteriores de la API.


0

Creo que vale la pena mencionar (después de que pasé más de una hora tirando de mi cabello) que si está utilizando MapFragment no puede utilizar FragmentActivity (SupportMapFragment funcionará bien en este entorno). Estaba a punto de renunciar a eso.



0

Esto podría ser de ayuda para algunos. Tenía dos proyectos, uno que era una copia de la demostración de Google y funcionó bien. Otro lo copié en un proyecto existente y no pude hacer que se ejecutara en absoluto. Y en el segundo error recibí el mensaje de error descrito anteriormente.

Mi problema se debió a una biblioteca no habilitada, a pesar de que reconstruí, importé varias veces, etc. Haga clic con el botón derecho en el proyecto -> Propiedades -> Ruta de compilación Java -> pestaña Orden y exportación. En el proyecto fallido, la pestaña "Bibliotecas privadas de Android" estaba desmarcada.

Una vez que lo habilité, el proyecto funcionó bien.


0

tenía todo lo que todos decían arriba y resolví el error simplemente llamando a la super.onCreate(savedInstanceState);primera instrucción en el método oncreate; antes de que fuera la última línea del método. : | desperdiciado todo el día.


0

Tengo este problema, acabo de actualizar los servicios de Google Play y me aseguro de que está agregando el proyecto google-play-service-lib como dependencia. Ahora funciona sin ningún cambio de código, pero sigo recibiendo "No se encontraron los recursos de los servicios de Google Play . Compruebe la configuración de su proyecto para asegurarse de que los recursos estén incluidos ". pero esto solo sucede cuando ha establecidoMyLocationEnabled (verdadero), ¿alguien sabe por qué?


0

No obtengo la verdadera solución, pero la resuelvo después de hacer estas cosas:
- Marque 'Copiar proyectos en el espacio de trabajo' al importar google-play-services_lib
- No configure minSdkVersion por debajo de 13
- Si obtiene un error con el tema, intente cambiar su tema de diseño a cualquier tema del sistema
: vuelva a crear su proyecto desde cero o revertir todo si lo obtiene de alguna parte


0

Tengo el mismo problema y acabo de instalar Play Services desde SDK y todos los problemas desaparecen.


0

Escribí en la actividad
import com.google.android.gms.maps.SupportMapFragment;

y Eclipse me dio el icono rojo> haga clic en> arreglar la configuración del proyecto ..> agregar archivo google-play-services.jar

¡Y finalmente funcionó!



0

Enfrenté este problema mientras usaba Android SDK para x86 en una máquina con Windows 7 de 64 bits. Descargué la versión de Android SDK de 64 bits, hice que Eclipse la viera en Ventana> Preferencias> Android> Ubicación del SDK y el problema dejó de ocurrir.


0

Por favor lea detenidamente

Si todo funciona igual que el código de Google, verifique el archivo de manifiesto en mi caso, agregué la clave geográfica y la clave del mapa, por eso ocurre la excepción,

Nota: no agregue dos claves en el archivo de manifiesto eliminar clave de mapa

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

agregue este código.

 <meta-data
        android:name="com.google.android.geo.API_KEY"
        android:value="@string/auto_location"/>

 <meta-data
        android:name="com.google.android.gms.version"
        android:value="@integer/google_play_services_version"/>
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.