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?
Respuestas:
En IntelliJ IDEA (actualizado para IntelliJ 12):
~/android-sdk/extras/google/google_play_services/libproject/google-play-services_lib/src/dummy.java
contengaclass dummy {}
.~/android-sdk/extras/google/google_play_services/libproject/google-play-services_lib
~/android-sdk/extras/google/google_play_services/libproject/google-play-services_lib/libs/google-play-services.jar
<Module source>
al final de la lista.Puede eliminarlo
dummy.java
si 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
.iml
archivo de proyecto en elgoogle-play-services_lib
directorio, 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.fuente
File > Import Module
opción en miEclipse IDE
. Por favor ayúdenme ...Actualizar
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
Espero que esto ayude.
fuente
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
fuente
Enfrenté el mismo problema y me tomó dos días encontrar una solución que funcionara para mí:
google-play-services_lib
(clic derecho en el proyecto eliminar)MainActivity
en mi caso) si tienes unoDebería ver algo como esto :
Nota: No debe tener algo como esto (el proyecto debe ser referido desde su espacio de trabajo):
Creo que el problema es que los proyectos de remolque hacen referencia a la misma biblioteca
fuente
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
fuente
Agregue dos jar en el directorio libs en su proyecto. Siga la siguiente información. En particular, creo que necesitas:
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.
fuente
Quizás debes resaltar esto:
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á.
fuente
En tu
MainActivity
(o en cada actividad que quieras poner el mapa v2) debes extenderFragmentActivity
oActivity
bien quieres usarSupportMapFragment
o simplementeMapFragment
. Utilice laMapFragment
clase solo si tiene como objetivo API 12 y superior. De lo contrario, utiliceSupportMapFragment
. Es una diferencia sutil pero comete el error.fuente
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 .
fuente
SupportMapFragment
. No funciona sin él ...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.
fuente
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.gms
clases por lo que es necesario configurar elgoogle 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_lib
no la que está en la carpeta sdk. Una vez hecho esto, el tutorial de Google funciona perfectamente.fuente
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.
fuente
relacionarse con esta sugerencia: https://stackoverflow.com/a/20215481/3080835
también tuve que agregar esto al
Application
elemento en el manifiesto:<meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
y funcionó perfectamente.
fuente
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>
fuente
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
fuente
Tuve el mismo problema en mi LG-E730 con Android 2.3.4. El error aparece antes de actualizar Google Play Service en mi teléfono.
fuente
¡¡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í.
fuente
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.
fuente
En el mismo tutorial se indica que
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.
fuente
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.
fuente
Primer paso http://developer.android.com/tools/projects/projects-eclipse.html#ReferencingLibraryProject Segundo paso http://developer.android.com/google/play-services/setup.html En esa página tiene un NOTA pero no prestamos atención
Nota: Debe hacer referencia a una copia de la biblioteca que copió en su árbol de fuentes; no debe hacer referencia a la biblioteca desde el directorio del SDK de Android.
Pero creo que no es una buena forma de documentación :)
fuente
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.
fuente
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.fuente
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é?
fuente
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
fuente
Tengo el mismo problema y acabo de instalar Play Services desde SDK y todos los problemas desaparecen.
fuente
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ó!
fuente
Agregue los servicios de Google Play a su proyecto
Para que las API de los servicios de Google Play estén disponibles para su aplicación:
siga los pasos presentes en este enlace: http://developer.android.com/google/play-services/setup.html#Setup
fuente
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.
fuente
Por favor lea detenidamente
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"/>
fuente