Obter uma chave de API do Google Maps

Para usar a funcionalidade do Google Maps no Android, você precisa se registrar para obter uma chave da API do Google Maps no Google. Até que você faça isso, você verá apenas uma grade em branco em vez de um mapa em seus aplicativos. Você deve obter uma chave v2 da API do Google Maps para Android - as chaves da chave v1 da API do Google Maps Android mais antiga não funcionarão.

A obtenção de uma chave v2 da API do Google Maps envolve as seguintes etapas:

  1. Recupere a impressão digital SHA-1 do keystore usado para assinar o aplicativo.
  2. Crie um projeto no console de APIs do Google.
  3. Obtendo a chave de API.

Obtendo sua impressão digital da chave de assinatura

Para solicitar uma chave da API do Google Maps ao Google, você precisa saber a impressão digital SHA-1 do keystore usado para assinar o aplicativo. Normalmente, isso significa que você terá que determinar a impressão digital SHA-1 para o keystore de depuração e, em seguida, a impressão digital SHA-1 para o keystore que é usado para assinar seu aplicativo para lançamento.

Por padrão, o keystore usado para assinar versões de depuração de um aplicativo Xamarin.Android pode ser encontrado no seguinte local:

C:\Users\[USERNAME]\AppData\Local\Xamarin\Mono para Android\debug.keystore

Informações sobre um repositório de chaves são obtidas executando o comando keytool no JDK. Essa ferramenta é normalmente encontrada no diretório Java bin:

C:\Arquivos de Programas\Android\jdk\microsoft_dist_openjdk_[VERSÃO]\bin\keytool.exe

Execute keytool usando o seguinte comando (usando os caminhos de arquivo mostrados acima):

keytool -list -v -keystore [STORE FILENAME] -alias [KEY NAME] -storepass [STORE PASSWORD] -keypass [KEY PASSWORD]

Exemplo de Debug.keystore

Para a chave de depuração padrão (que é criada automaticamente para depuração), use este comando:

keytool.exe -list -v -keystore "C:\Users\[USERNAME]\AppData\Local\Xamarin\Mono for Android\debug.keystore" -alias androiddebugkey -storepass android -keypass android

Chaves de produção

Ao implantar um aplicativo no Google Play, ele deve ser assinado com uma chave privada. O keytool será necessário executar com os detalhes da chave privada e a impressão digital SHA-1 resultante usada para criar uma chave de API do Google Maps de produção. Lembre-se de atualizar o arquivo AndroidManifest.xml com a chave correta da API do Google Maps antes da implantação.

Saída Keytool

Você deve ver algo como a seguinte saída na janela do console:

Alias name: androiddebugkey
Creation date: Jan 01, 2016
Entry type: PrivateKeyEntry
Certificate chain length: 1
Certificate[1]:
Owner: CN=Android Debug, O=Android, C=US
Issuer: CN=Android Debug, O=Android, C=US
Serial number: 4aa9b300
Valid from: Mon Jan 01 08:04:04 UTC 2013 until: Mon Jan 01 18:04:04 PST 2033
Certificate fingerprints:
    MD5:  AE:9F:95:D0:A6:86:89:BC:A8:70:BA:34:FF:6A:AC:F9
    SHA1: BB:0D:AC:74:D3:21:E1:43:07:71:9B:62:90:AF:A1:66:6E:44:5D:75
    Signature algorithm name: SHA1withRSA
    Version: 3

Você usará a impressão digital SHA-1 (listada após SHA1) mais adiante neste guia.

Criando um projeto de API

Depois de recuperar a impressão digital SHA-1 do keystore de assinatura, é necessário criar um novo projeto no console de APIs do Google (ou adicionar o serviço Google Maps Android API v2 a um projeto existente).

  1. Em um navegador, navegue até o Painel de serviços da API do Google Developers Console e clique em Selecionar um projeto. Clique no nome de um projeto ou crie um novo clicando em NOVO PROJETO:

    Google Developer Console CREATE PROJECT button

  2. Se você criou um novo projeto, digite o nome do projeto na caixa de diálogo Novo projeto que é exibida. Essa caixa de diálogo fabricará uma ID de projeto exclusiva baseada no nome do projeto. Em seguida, clique no botão Criar , conforme mostrado neste exemplo:

    New project is named XamarinMapsDemo

  3. Depois de um minuto ou mais, o projeto é criado e você é levado para a página Painel do projeto. A partir daí, clique em HABILITAR APIS E SERVIÇOS:

    Clicking Google Maps Android API in the Library section

  4. Na página Biblioteca de API, clique em SDK do Google Maps para Android. Na próxima página, clique em HABILITAR para ativar o serviço para este projeto:

    Clicking the ENABLE button in the Dashboard section

Neste ponto, o projeto de API foi criado e a API v2 do Google Maps Android v2 foi adicionada a ele. No entanto, você não pode usar essa API em seu projeto até criar credenciais para ela. A próxima seção explica como criar uma chave de API e autorizar um aplicativo Xamarin.Android a usar essa chave.

Obtendo a chave de API

Depois que o projeto de API do Google Developer Console for criado, será necessário criar uma chave de API do Android. Os aplicativos Xamarin.Android devem ter uma chave de API antes de receberem acesso à Android Map API v2.

  1. Na página SDK do Google Maps para Android exibida (depois de clicar em ATIVAR na etapa anterior), vá para a guia Credenciais e clique no botão Criar credenciais :

    Maps SDK for Android Credentials message

  2. Clique em Chave de API:

    Add credentials to your project dialog

  3. Depois que esse botão é clicado, a chave da API é gerada. Em seguida, é necessário restringir essa chave para que apenas seu aplicativo possa chamar APIs com essa chave. Clique em RESTRINGIR CHAVE:

    Clicking Restrict Key on the Credentials page

  4. Altere o campo Nome da Chave de API 1 para um nome que o ajudará a lembrar para que a chave é usada (XamarinMapsDemoKey é usado neste exemplo). Em seguida, clique no botão de opção Aplicativos Android:

    Selecting Android apps on the Credentials page

  5. Para adicionar a impressão digital SHA-1, clique em + Adicionar nome do pacote e impressão digital:

    Clicking Add package name and fingerprint

  6. Insira o nome do pacote do seu aplicativo e insira a impressão digital do certificado SHA-1 (obtida por meio de keytool conforme explicado anteriormente neste guia). No exemplo a seguir, o nome do pacote para XamarinMapsDemo é inserido, seguido pela impressão digital do certificado SHA-1 obtida de debug.keystore:

    Package name entered is com.xamarin.docs.android.map

  7. Observe que, para que seu APK acesse o Google Maps, você deve incluir impressões digitais SHA-1 e nomes de pacotes para cada keystore (debug e release) que você usa para assinar seu APK. Por exemplo, se você usar um computador para depuração e outro computador para gerar o APK de versão, deverá incluir a impressão digital do certificado SHA-1 do keystore de depuração do primeiro computador e a impressão digital do certificado SHA-1 do keystore de release do segundo computador. Clique em + Adicionar nome do pacote e impressão digital para adicionar outra impressão digital e nome do pacote, conforme mostrado neste exemplo:

    Adding another fingerprint creates another SHA-1 certificate

  8. Clique no botão Salvar para salvar as alterações. Em seguida, você retornará à lista de suas chaves de API. Se você tiver outras chaves de API criadas anteriormente, elas também serão listadas aqui. Neste exemplo, apenas uma chave de API (criada nas etapas anteriores) é listada:

    XamarinMapsDemoKey is shown in the API keys list

Conectar o projeto a uma conta faturável

A partir de 11 de junho de 2018, a chave de API não funcionará se o projeto não estiver conectado a uma conta faturável (mesmo que o serviço ainda seja gratuito para aplicativos móveis).

  1. Clique no botão do menu hambúrguer e selecione a página Faturamento :

    Selecting the hamburger menu billing section

  2. Vincule o projeto a uma conta de faturamento clicando em Vincular uma conta de faturamento seguida de CRIAR CONTA DE FATURAMENTO no pop-up exibido (se você não tiver uma conta, será orientado a criar uma nova):

    Link project to billing account

Adicionando a chave ao seu projeto

Finalmente, adicione essa chave de API ao arquivo AndroidManifest.XML do seu aplicativo Xamarin.Android. No exemplo a seguir, YOUR_API_KEY deve ser substituído pela chave de API gerada nas etapas anteriores:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    android:versionName="4.10" package="com.xamarin.docs.android.mapsandlocationdemo"
    android:versionCode="10">
...
  <application android:label="@string/app_name">
    <!-- Put your Google Maps V2 API Key here. -->
    <meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="YOUR_API_KEY" />
    <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
  </application>
</manifest>