google maps android api 2 - that - java.lang.noclassdeffounderror: com.google.android.gms.R $ styleable
google maps api key android (12)
Estoy creando una aplicación de Android usando Google Maps. aquí está el código:
MapFragActivity.java
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.SupportMapFragment;
public class MapFragActivity extends FragmentActivity {
private GoogleMap map;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_map_frag);
map = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map))
.getMap();
}
}
AndroidManifest.xml:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.him.mapfrag_rnd"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="11"
android:targetSdkVersion="15" />
<permission
android:name="com.him.mapfrag_rnd.permission.MAPS_RECEIVE"
android:protectionLevel="signature" />
<uses-permission android:name="com.him.mapfrag_rnd.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" />
<uses-feature
android:glEsVersion="0x00020000"
android:required="true" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MapFragActivity"
android:label="@string/title_activity_map_frag" >
<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="my_api_key" />
</application>
</manifest>
activity_map_frag.xml:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<fragment
android:id="@+id/map"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</RelativeLayout>
cuando pruebo este código me sale un error, aquí está el registro:
01-17 10:01:17.685: E/AndroidRuntime(8923): FATAL EXCEPTION: main
01-17 10:01:17.685: E/AndroidRuntime(8923): java.lang.NoClassDefFoundError: com.google.android.gms.R$styleable
01-17 10:01:17.685: E/AndroidRuntime(8923): at com.google.android.gms.maps.GoogleMapOptions.createFromAttributes(Unknown Source)
01-17 10:01:17.685: E/AndroidRuntime(8923): at com.google.android.gms.maps.SupportMapFragment.onInflate(Unknown Source)
01-17 10:01:17.685: E/AndroidRuntime(8923): at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:279)
01-17 10:01:17.685: E/AndroidRuntime(8923): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:669)
01-17 10:01:17.685: E/AndroidRuntime(8923): at android.view.LayoutInflater.rInflate(LayoutInflater.java:739)
01-17 10:01:17.685: E/AndroidRuntime(8923): at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
01-17 10:01:17.685: E/AndroidRuntime(8923): at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
01-17 10:01:17.685: E/AndroidRuntime(8923): at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
01-17 10:01:17.685: E/AndroidRuntime(8923): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:272)
01-17 10:01:17.685: E/AndroidRuntime(8923): at android.app.Activity.setContentView(Activity.java:1835)
01-17 10:01:17.685: E/AndroidRuntime(8923): at com.him.mapfrag_rnd.MapFragActivity.onCreate(MapFragActivity.java:16)
01-17 10:01:17.685: E/AndroidRuntime(8923): at android.app.Activity.performCreate(Activity.java:4470)
01-17 10:01:17.685: E/AndroidRuntime(8923): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1052)
01-17 10:01:17.685: E/AndroidRuntime(8923): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1931)
01-17 10:01:17.685: E/AndroidRuntime(8923): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1992)
01-17 10:01:17.685: E/AndroidRuntime(8923): at android.app.ActivityThread.access$600(ActivityThread.java:127)
01-17 10:01:17.685: E/AndroidRuntime(8923): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1158)
01-17 10:01:17.685: E/AndroidRuntime(8923): at android.os.Handler.dispatchMessage(Handler.java:99)
01-17 10:01:17.685: E/AndroidRuntime(8923): at android.os.Looper.loop(Looper.java:137)
01-17 10:01:17.685: E/AndroidRuntime(8923): at android.app.ActivityThread.main(ActivityThread.java:4511)
01-17 10:01:17.685: E/AndroidRuntime(8923): at java.lang.reflect.Method.invokeNative(Native Method)
01-17 10:01:17.685: E/AndroidRuntime(8923): at java.lang.reflect.Method.invoke(Method.java:511)
01-17 10:01:17.685: E/AndroidRuntime(8923): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:986)
01-17 10:01:17.685: E/AndroidRuntime(8923): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:753)
01-17 10:01:17.685: E/AndroidRuntime(8923): at dalvik.system.NativeStart.main(Native Method)
cuando realizo algunos cambios en MapFragActivity.java, se muestra el mapa. aquí están los cambios:
package com.him.mapfrag_rnd;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import com.google.android.gms.maps.SupportMapFragment;
public class MapFragActivity extends FragmentActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity_map_frag);
SupportMapFragment fragment = new SupportMapFragment();
getSupportFragmentManager().beginTransaction().add(android.R.id.content, fragment).commit();
}
}
El cambio que he hecho se comentó en setContentView. He seguido todos los pasos requeridos y sigo obteniendo un error. si descomenta el setContentView () entonces nuevamente aparece el error.
¡¡¡Por favor ayuda!!!
Utilice Android SDK Manager para descargar "google play services"
importarlo a su espacio de trabajo (ruta de acceso: android-sdk root / extras / google / google_play_service / libproject / google-play-service_lib)
Propiedades del proyecto -> android -> Biblioteca agregar google-play-service_lib
Build path -> Order and Export check Android librerías privadas
Comprueba el archivo AndroidManifest.xml de tu proyecto google-play-services_lib. Debiera ser:
package="com.google.android.gms"
Creo que tienes que importar toda la biblioteca del Servicio de Google Play a tu IDE, no solo el .jar
intentalo ;-)
Estos dos servicios de google play se agregan a build.gradle. Funcionó para mí. Compile ''com.google.android.gms: play-services-appindexing: 8.1.0'' compile ''com.google.android.gms: play-services : 8.1.0 ''
He seguido el enlace http://www.vogella.com/tutorials/AndroidGoogleMaps/article.html
y agregué el proyecto de la biblioteca google-play-services_lib a mi aplicación. Estuvo funcionando bien hasta ayer. Pero hoy tengo la excepción mencionada anteriormente. Es debido a la ausencia de la biblioteca de google play o porque mi proyecto no puede acceder a los archivos de la biblioteca. Reconstruí mi proyecto pero no tuvo éxito. Luego reconstruí el proyecto de la biblioteca google-play-services_lib pero no tuve esperanza. Luego probé la opción "construir todo" en eclipse y funciona bien.
Lo que debe hacer es incluir una biblioteca de servicios de Google Play en su proyecto. Google tiene muy buenas instrucciones aquí:
Además, hay un inicio rápido que encontré muy útil al intentar hacer que Google Maps v2 funcione.
Resolví el problema comprobando que los servicios de reproducción se hayan agregado correctamente y agregando estos datos en el archivo de manifiesto bajo la etiqueta de la aplicación <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
Resolví este error al marcar " Copiar proyectos en el espacio de trabajo " al importar la lib de servicios de Google Play.
Más información aquí: http://developer.android.com/google/play-services/setup.html
Si está utilizando Intellij Idea,
- Seleccione su proyecto del panel del proyecto
- Presione F4 para abrir la ventana de estructura del proyecto
- Seleccione Módulos desde el panel izquierdo, luego presione el botón + luego seleccione "importar módulo" y vaya a " ANDROID-SDK " / extras / google / google_play_services / libproject / google-play-services_lib. Al hacer esto, este proyecto se agregará a los módulos junto con su proyecto.
- Seleccione su proyecto, luego seleccione "Dependencias" (es una pestaña) desde el panel derecho. Haga clic en el botón + luego "3 dependencias del módulo ..." y seleccione "google-play-services_lib".
- Haga clic en el botón + nuevamente y luego en "1 jarras o directorios ..." y vaya a la carpeta "/ libs" en la ruta anterior y seleccione "google-play-services.jar".
- Haga clic en Aceptar y cierre la ventana de estructura del proyecto.
Nota : asegúrese de no haber agregado el proyecto "google-play-services_lib" como biblioteca en "Bibliotecas" (panel izquierdo debajo de Módulos). Si es así, puede ir a " Bibliotecas y simplemente eliminarlo. La Biblioteca de Google Play no debería aparecer en las bibliotecas .
Nota 2 : puede copiar todo el directorio google-play-services_lib en su propio proyecto si desea tenerlo en control de versiones o similar.
Si está utilizando servicios divididos de Google Play (consulte aquí: https://developers.google.com/android/guides/setup#split )
Debe incluir los servicios de base play en su archivo gradle:
compile ''com.google.android.gms:play-services-base:7.5.0''
El uso de Slipt Play Services previene el error de 65k y hace que su aplicación sea más pequeña
También obtuve este error en android studio y ya había incluido los servicios de reproducción alpha 3 con gradle alpha5, lo que hice mal fue incluir multidex.
en gradle
multiDexEnabled true
y en la clase de aplicación onCreate
MultiDex.install (esto);
pero me olvidé de extender la clase de aplicación con MultiDexApplication
porque MultiDexApplication no se ha extendido, por lo que no puede incluir gms ni ninguna otra clase dex, por lo que está dando error al inicio de gms String.
Espero que this ayude
Yo tengo el mismo error. Uso Android Studio y Gradle, por lo tanto, no hay muchas cosas que configurar o mejorar. He hecho casi todas las cosas pero no funcionaron para mí. El último funciona: reemplace todo el paquete de servicios de juegos por otros más pequeños. En mi caso:
Reemplazar (en el archivo build.gradle):
compile ''com.google.android.gms:play-services:8.4.0''
por:
// Google Cloud Messaging
compile ''com.google.android.gms:play-services-gcm:8.4.0''
// Google Location
compile ''com.google.android.gms:play-services-location:8.4.0''