Spanish [SOLUCIONADO] Error al abrir aplicación Googlemaps

TheFalcon

Active Member
Licensed User
Buenas, y perdonad las molestias. Estoy intentando hacer funcionar el ejemplo de google maps que hay en el foro y no lo consigo, comento.

E seguido el tutorial de Erel https://www.b4x.com/android/forum/threads/google-maps.63930/#content

Y el de rscheel https://www.b4x.com/android/forum/threads/b4a-tutorial-google-maps-actualizado-a-b4a-v5-8-y-b4a-v6.61387/

E creado la Clave API y el SHA1 ( que no se cual es su funcion la verdad)


El codigo es igual que en los 2 ejemplos pero poniendo mi API key.
B4X:
AddManifestText(
<uses-sdk android:minSdkVersion="14" android:targetSdkVersion="19"/>
<supports-screens android:largeScreens="true"
    android:normalScreens="true"
    android:smallScreens="true"
    android:anyDensity="true"/>)


AddApplicationText(
<meta-data
  android:name="com.google.android.geo.API_KEY"
  android:value="AIzaSyCZWCRoUlbBPR2lkBR71Qn4***********"/>
  <meta-data android:name="com.google.android.gms.version"
   android:value="@integer/google_play_services_version" />
)

y me da error al ejecutar la aplicación no se abre.
LO ÚNICO que no e usado y es por que no se si es necesario, y tampoco consigo obtenerlo ni mediante sdk manager ni mediante android studio es el archivo android.jar que ha de estar en la carpeta de google maps .

He mirado todos los foros y probado todo y nada ya no se que puede ser.
 

Attachments

tomky

Active Member
Licensed User
Hola TheFalcon.

Luego, para este proyecto, en el IDE de B4A debes:

1. Ponerle al proyecto el mismo nombre de paquete que el que pusiste al crear la API Key.

2. Clicar en el menú: Herramientas / Clave de Firma Privada. Y allí crear un archivo dentro del proyecto. Además debes crearle una contraseña que no debes perder.

Y el SHA1 está dentro de ese archivo.

Saludos.
 
Last edited:

tomky

Active Member
Licensed User
Y de esta ventana en "Herramientas / Clave de Firma Privada" se coge el SH1 con el que tenemos que sobreescribir el de developers.

Y el nombre del paquete del proyecto (Crtl+B) debe coincidir con el nombre del paquete dado en la API Key.
 
Last edited:

TheFalcon

Active Member
Licensed User
Muchas Gracias por tu respuesta y perdona la tardanza, las fiestas son muy malas.

1. Ponerle al proyecto el mismo nombre de paquete que el que pusiste al crear la API Key.

Donde esta el nombre exactamente, pues yo puse nombre al paquete que es b4a.app y nombre a la api que es CLAVE DE API 1 , no encuentro otro nombre o soy torpe con el panel de developers :p.



2. Clicar en el menú: Herramientas / Clave de Firma Privada. Y allí crear un archivo dentro del proyecto. Además debes crearle una contraseña que no debes perder.

Y el SHA1 está dentro de ese archivo.

tengo la privat key creada, y coincide el sha con el de developers. La duda es la private key e de copiarla dentro de la carpeta del proyecto, o dentro de alguna carpeta en particular?

el nombre del proyecto tengo el default, por que no se cual e de poner.




Gracias y Felices fiestas.
 

TheFalcon

Active Member
Licensed User
Vale, encontré esto, no se si ese es el nombre del proyecto que e de poner en CTR+B en el campo Configuration Name que supongo que es.


Con lo cual tengo 3 nombres.
Proyecto --> MiUbicacion
Nombre del Paquete --> B4a.mapp
Nombre del Api --> Clave de API 1

Supongo que uno de esos es el que e de poner en CTRL+B , lo que no se es cual, y en que campo exactamente.

Un saludo.
 

tomky

Active Member
Licensed User
Hola TheFalcon. No pasa nada por la tardanza. Lógico.

Ya vas bien. Los otros nombres son lo de menos. Yo los tengo diferentes, como tú. Y también Default en Ctrl+B.
Lo importante es que han de coincidir el nombre del paquete (b4a.mapp) en Ctrl+B, con el que hay en Clave de API 1, a la izquierda de donde pone su SHA-1, en developers. Aunque está estandarizado que esté escrito todo en minúsculas en los dos sitios. Se ven en tus imágenes y ahora no coinciden. Uno es ba4.mapp y el otro b4a.mapp.

El archivo que creas con B4A lo puedes poner donde quieras, supongo. Yo lo pongo dentro del proyecto para tenerlo todo junto, pues a veces hay que volver a asignarlo, al volver a él, al cambiar de proyecto de trabajo. Tú mismo.

Saludos y buenas fiestas.
 
Last edited:

TheFalcon

Active Member
Licensed User
Sigue sin irme, Recapitulo todo lo que e echo, aunque e probado también a añadir el archivo google-services.json que ley en uno de los tutoriales y nada.
uso VERSIÓN 6.5 ;

en el patch configuration la ruta de android que tengo es :
C:\android\platforms\android-14\android.jar

y tengo instalado el google play services desde sdk manager

Uso las librerias ;: Core ; Googlemaps(V2.0) , GPS , JAVAOBJECT
En el android manifest pongo
B4X:
AddManifestText(
<uses-sdk android:minSdkVersion="14" android:targetSdkVersion="19"/>
<supports-screens android:largeScreens="true"
    android:normalScreens="true"
    android:smallScreens="true"
    android:anyDensity="true"/>)
AddApplicationText(
<meta-data
  android:name="com.google.android.geo.API_KEY"
  android:value="AIzaSyCZWCRoUlbBPR2lkBR71Qn4GBXXXXXXX"/>
  <meta-data android:name="com.google.android.gms.version"
   android:value="@integer/google_play_services_version" />
)

SetApplicationAttribute(android:icon, "@drawable/icon")
SetApplicationAttribute(android:label, "$LABEL$"
En CTR+ B en la linea de Package, pongo el mismo nombre que le puse al paquete del SHA1 ba4.mapp

En el Key Private, añado mi llave con su contraseña la cual luego veo que contiene todos los datos inclusive el SHA1
B4X:
Tipo de Almacén de Claves: JKS
Proveedor de Almacén de Claves: SUN
Su almacén de claves contiene 1 entrada
Nombre de Alias: b4a
Fecha de Creación: 11-dic-2017
Tipo de Entrada: PrivateKeyEntry
Longitud de la Cadena de Certificado: 1
Certificado[1]:
Propietario: CN=fra*****, O=***, C=***
Emisor: CN=fra***, O=***, C=***
Número de serie: 61c******
Válido desde: Mon Dec 11 19:31:52 CET 2017 hasta: Mon Apr 10 20:31:52 CEST 2056
Huellas digitales del Certificado:
     MD5: D0:4C:77:49:EE:A3:68:A2:92:6D:XXXXXXXXX
     SHA1: 61:2A:83:49:1F:1A:D8:05:4A:A5:B0:XXXXXXX
     ETC ETC ETC

Código uso el de uno de los Tutoriales tal cual, no cambio nada de nada

B4X:
Sub Process_Globals
    Dim GPS As GPS
    'Dim D As DoubleTaptoClose
End Sub

Sub Globals
    Private gmap As GoogleMap
    Private MapFragment1 As MapFragment
    Dim Latitud As Double = 0
    Dim Longitud As Double = 0
    Dim Lat2 As Double = 0
    Dim Lon2 As Double = 0
    Dim p1, p2 As Location
    Dim Distance As Float
    Dim boton1 As Button
End Sub

Sub Activity_Create(FirstTime As Boolean)
    Activity.LoadLayout("1")
    If MapFragment1.IsGooglePlayServicesAvailable = False Then
        ToastMessageShow("Please install Google Play Services.", True)
    End If
    GPS.Initialize("GPS")
    'Boton velocidad'
    boton1.Initialize(0)
    boton1.Text = 0 &" "&"km/h"
    boton1.TextColor = Colors.Red
    boton1.TextSize = 15
    Activity.AddView(boton1, 40%x, 5dip, 25%x, 40dip)
    'Fin Boton velocidad'
End Sub

Sub MapFragment1_Ready
    gmap = MapFragment1.GetMap
 
    Dim JavaMapsObject As JavaObject
    JavaMapsObject = gmap.GetUiSettings
    JavaMapsObject.RunMethod("setMapToolbarEnabled", Array As Object(True))

    '    Dim m1 As Marker = gmap.AddMarker(10, 30, "test")
    '    m1.Snippet = "This is the snippet"
    Dim cp As CameraPosition
    cp.Initialize(-33.469119900000000000 , -70.641997000000000000, 15)
    gmap.AnimateCamera(cp)
End Sub

Sub GPS_LocationChanged (Parametro As Location)
    Dim sp As Int
    sp = Ceil(Parametro.Speed * 3.6)
    boton1.Text = sp &" "&"km/h"
    Latitud = Parametro.Latitude
    Longitud = Parametro.Longitude
    p2.Initialize2(Latitud,Longitud)
    p1.Initialize2(Lat2, Lon2)
    Distance  = p1.DistanceTo(p2)
    If Latitud <> 0 And Longitud <> 0 Then
        If Distance > 10 Then
            Lat2 = Latitud
            Lon2 = Longitud
            Dim cp As CameraPosition
            cp.Initialize2(Parametro.Latitude, Parametro.Longitude, gmap.CameraPosition.Zoom, Parametro.Bearing, 0)
            gmap.AnimateCamera(cp)
        End If
    End If
End Sub

Sub Activity_Resume
    If GPS.GPSEnabled = False Then
        ToastMessageShow("Debe Activar el GPS del Equipo.", True)
        StartActivity(GPS.LocationSettingsIntent) 'Will open the relevant settings screen.
    Else
        GPS.Start(0, 0) 'Listen to GPS with no filters.
    End If
End Sub

Sub Activity_Pause (UserClosed As Boolean)
    GPS.Stop
End Sub
Lo compilo en modo RELEASE.

y al abrir siempre me dice lo mismo, error al abrir la aplicación.No se si me he saltado algo pero creo que lo hago todo al dedillo y lo basico no quiero pensar cuando quiera marcar POIS xDDDDD.

Un Saludo y Feliz Año Nuevo
 
Last edited:

rscheel

Well-Known Member
Licensed User
Tu problema es con la clave privada que creas en B4A para compilar proyectos, por defecto B4A viene con una clave privada, seguramente la has cambiado o has actualizado jdk?
 

tomky

Active Member
Licensed User
Hola TheFalcon.

¿Qué error te marca?

Si añades al Main la línea
B4X:
#BridgeLogger: True
al emular con el Bridge en tu dispositivo en modo Release te dirá el error en la sección de logs del IDE.


¿Pusiste en el Main la línea
B4X:
#AdditionalJar: com.google.android.gms:play-services-maps
?
(Si tu versión de B4A es 6+)

 

TheFalcon

Active Member
Licensed User
Tu problema es con la clave privada que creas en B4A para compilar proyectos, por defecto B4A viene con una clave privada, seguramente la has cambiado o has actualizado jdk?
En teoria no e actualizado, como podria verificarlo, volviendo a generar el SHA1 desde consola?. La key uso una que yo e creado con mi clave privada que se llama
key th3falcon.keystore



Hola TheFalcon.

¿Qué error te marca?

Si añades al Main la línea
B4X:
#BridgeLogger: True
al emular con el Bridge en tu dispositivo en modo Release te dirá el error en la sección de logs del IDE.
Pongo dentro de #Region Project Attributes donde están todos los versión , applicacion label , etc. y a la derecha en LOGS conforme pongo la linea
#BridgeLogger: True , me marca en rojo Attribute not supported: bridgelogger .

¿Pusiste en el Main la línea
B4X:
#AdditionalJar: com.google.android.gms:play-services-maps
?
(Si tu versión de B4A es 6+)


Si tengo esa linea puesta dentro de #Region Project Attributes , y mi versión es 6.5


Gracias por vuestro interés y perder vuestro tiempo ,y perdonar las molestias.
 

TheFalcon

Active Member
Licensed User
Lo que si me he dado cuenta que de tanto probar y trastear, en el Developers de Google me ha generado unas lineas que no se para que son.

 

tomky

Active Member
Licensed User
1. No sé por qué no te acepta la línea del BridgeLogger. Quizás debas actualizar el Bridge o el B4A.
De todas maneras, puedes publicar una captura de pantalla del error que te indica el programa, para que nos oriente.

2. No sé si es buena idea crear otra Clave de Firma en B4A. Prueba a copiar el SHA-1 que te aparece en la ventanita de la opción Clave de Firma Privada, al seleccionar tu clave. Luego edita tu Clave de API 1 en developers, y pega el SHA-1 allí sustituyéndolo.

3. Las otras claves son para otros servicios. OAuth 2.0 para la autentificación y autorización de tus usuarios utilizando Google. Y la Browser Key para servicios como Google Geocoding REST API: envías una dirección y te da las coordenadas, o viceversa. Vía web.
https://www.b4x.com/android/forum/threads/b4x-google-geocoding-rest-api.83870/#content
Yo no las quitaría hasta informarme bien.

4. No es ninguna molestia. Solamente nos da rabia saber que lo a que nosotros nos funciona no te funciona a tí.
 

TheFalcon

Active Member
Licensed User
Buenas.
Lo de la linea de Bridgelogger supongo que sera por la versión, tengo pendiente volver a pagar la cuota para actualizaciones de 2 años, pero si no consigo ni esto que es para mi versión y es en lo que estoy ahora de que me valdrá pagar actualizaciones de momento jejejej.

Lo de otra clave, lo hice la semana pasada, con otra cuenta google active developers, la api de googlemaps, y genere una keay api nueva y un private sing nueva también, y tampoco.

Tengo un amigo con una versión 7.4 o así, le pasare el proyecto para que el lo pruebe en su version o al menos le de el error con bridgelogger.

Tengo una duda constante , en varios post ley que se copiara google-services.json de los servicios de google y se pegara en el proyecto, yo lo hice pero si es un paso esencial, no se como hay que hacerlo.

Un saludo, Gracias y encuenta pruebe pongo el resultado.
 

TheFalcon

Active Member
Licensed User
En 7.1 si me funciona. Es decir:

Hago el projecto con Versión 6.5 como viene en el foro y me da error al abrir.

El mismo projecto sin modificar lo abro con versión 7.1 y funciona perfecto.

paranollas de la vida xD toca renovar los 2 años.
Muchas Gracias a los 2. no obstante seguiré probando por que no me funciona con la versión 6.5 cuando el tutorial es para versiones 6+
 
Last edited:

TheFalcon

Active Member
Licensed User
en mi caso el tutorial pone que es la Version 6+ pero con la Version 6.5 no me funcionaba, proble con la versión de un amigo que es la 7.1 y con esa el projecto me arranco sin problemas, todo eso una vez que solvente los anteriores problemas que comente mas arriba, como que tenia que poner en el build configuration el mismo nombre que en el paquete de la api key , etc.
 
Top