java - studio - proyecto google maps android
El error "Falló al encontrar el estilo mapViewStyle" persiste (5)
He estado trabajando en esta aplicación durante casi un año (proyecto sénior) cuando decidió romper hace unos días. Mi aplicación se ha desarrollado utilizando Eclipse versión 3.7.2 de 64 bits dirigida a Froyo Android 2.2, utilizando mi PC con Windows 7 de 64 bits. Hasta ahora lo he intentado:
- reordenando la etiqueta uses-library en el archivo de manifiesto
- reescribiendo el archivo xml del mapa
- eliminando el archivo R.java y refrescando
- colocando el elemento mapview dentro de un diseño
- reinstalando eclipse y el android-sdk
- limpiando el proyecto
- creando un archivo style.xml y haciendo referencia a él
- desplegando en un dispositivo real
- volviendo al código anterior
y posiblemente más ...
Mi código es el siguiente: gmap.xml
<?xml version="1.0" encoding="utf-8"?>
<com.google.android.maps.MapView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mapview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true"
android:apiKey="0xMbgnc-el963gCdpl547hdkgXUILTskZr-T5uvg" // random key posted here
/>
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.PubMe"
android:versionCode="1"
android:versionName="1.0">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-sdk android:minSdkVersion="8"/>
<application android:icon="@drawable/icon" android:label="@string/app_name">
<uses-library android:name="com.google.android.maps" />
<activity android:name=".PubMeActivity"
android:label="@string/app_name"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".MappingActivity"
android:label="@string/app_name">
</activity>
</application>
</manifest>
Agradezco cualquier ayuda por adelantado.
Creo que com.google.android.maps.MapView ahora está obsoleto ahora que utilicé com.google.android.gms.maps.MapView. Consulte http://developer.android.com/reference/com/google/android/gms/maps/MapView.html para obtener ayuda. Si desea utilizar MapFragment, vaya a http://www.androidhive.info/2013/08/android-working-with-google-maps-v2/ Url.
Debe incluir /path_to_android-sdk/extras/google/google_play_services/libproject/google-play-services_lib
Library como una biblioteca externa en su proyecto y también incluir este archivo jar /path_to_android-sdk/extras/google/google_play_services/libproject/google-play-services_lib/libs/google-play-services.jar
.
además de esos, debes tener estos permisos:
<uses-permission android:name="android.permission.INTERNET" /> **<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"/>
Sugiero echar un vistazo a la aplicación de demostración de Mapas. Esto viene incluido con la lib de servicios de Google Play, en su administrador de SDK simplemente incluya la casilla de verificación para ejemplos para los servicios de Google Play. A continuación, puede encontrar los archivos de proyecto @ <android-sdk>/extras/google-play-services/samples/maps
en su directorio SDK.
estos son los permisos que debería tener normalmente para un mapa v2
<permission
android:name="com.example.gmapsapp.permission.MAPS_RECEIVE"
android:protectionLevel="signature" />
<uses-permission android:name="com.example.gmapsapp.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" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
y la clave api ahora se usa en el archivo de manifiesto con metaetiqueta
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="@string/apikey />
aquí estoy incluyendo un archivo xml ejemplo de gmaps
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/map"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<permission
android:name="com.example.app.permission.MAPS_RECEIVE"
android:protectionLevel="signature" />
<uses-permission android:name="com.example.app.permission.MAPS_RECEIVE"/>
Intente agregar lo anterior en su archivo Manifest.