6

Sto scrivendo un progetto di libreria Android. Provo a registrarmi su Google map e ottenere la chiave API. Io uso il mio certificate information, il che significa che prendo un'impronta digitale SHA1 dalla mia libreria e ottengo la chiave API.Il progetto di libreria Android non riesce a registrarsi a Google Map

Il problema è che ho bisogno di scrivere queste informazioni nell'applicazione manifesta ospite:

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

Questa API tute chiave mia biblioteca e non l'applicazione host. Quando eseguo il mio progetto di libreria come un'applicazione separata, funziona correttamente

Qualcuno ha un'idea di come posso utilizzare il mio api_key come progetto di libreria?

Grazie

risposta

5

Le chiavi API sono legati al nome del pacchetto della domanda e il certificato utilizzato per firmare (è possibile utilizzare la stessa chiave per molteplici applicazioni, naturalmente, ma è necessario registrare ciascuno individualmente in il Developer Console).

Per quanto ne so, non è possibile fornire la chiave in runtime. Mentre l'API V1 ora deprecata forniva un constructor supplying the key, lo new API no.

Pertanto, se quello che vuoi fare è distribuire un progetto di libreria "pronto all'uso" con una chiave API inclusa (la tua) per qualsiasi applicazione, sembra che non sia possibile. Devi dire ai tuoi utenti di ottenere una chiave e quindi includere la voce "com.google.android.maps.v2.API_KEY" nel loro file AndroidManifest.xml.

+0

Quindi quale sarebbe un buon risultato? Chiedere la chiave API dell'host durante l'inizializzazione del pacchetto? –

+0

@AdamMatan Non penso sia possibile. Ho modificato la mia risposta un po 'per chiarire questo punto. – matiash

+0

@matiash se l'applicazione host si registra nella console dello sviluppatore e include la voce "com.google.android.maps.v2.API_KEY" nel proprio file AndroidManifest.xml. la nostra biblioteca riuscirà a utilizzare google maps? – user3616237

1

1.-Inserire l'attività che implementa MapView/FragmentMap nella libreria. Dal momento che l'attività sarebbe in un pacchetto registrato nella console degli sviluppatori, dovrebbe funzionare. Dovrai unire i manifesti.

2.-Nomina il pacchetto principale dell'app finale con lo stesso nome del pacchetto principale della libreria. Poiché il nome del pacchetto è utilizzato come firma per la chiave API, potrebbe funzionare. Dovrai unire i manifesti.

Problemi correlati