mapview - map fragment android studio
Android: ¿elige automáticamente la clave de depuración/versión de Maps v2 api? (4)
Estoy usando Google Maps v2 API en mi proyecto. En Google Maps v2, la clave de la API de depuración / publicación se define en AndroidManifest.xml
. He visto el enlace pero en esa clave del mapa está definido en un archivo de diseño xml que no está en AndroidManifest.xml
. Entonces, ¿puedo definir las claves de depuración y liberación para mi proyecto en AndroidManifest.xml
?
Quiero algo como esto en AndroidManifest.xml
:
Si el modo de depuración:
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="@string/debug_map_api_key"/>
Si el modo de liberación:
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="@string/release_map_api_key"/>
Una de las mejores maneras de usar el archivo build.gradle en la última versión de Android 5.0 y Android 6.0 (API 20, 21,22,23)
Bueno, puedes usarlos simplemente sin crear sabores de producto en gradle
. Este es otro ejemplo que podemos lograr a través de Gradle
. Puedes lograrlo con dos simples pasos.
- Agregue valor personalizado al archivo
manifestplaceholders
demanifestplaceholders
.
Vea abajo
buildTypes {
debug {
manifestPlaceholders = [ mapApiKeyValue:"GHjaSyAjlyp3O831lgaonHMXsd-_DpQ3002x3S4"]
}
release {
manifestPlaceholders = [ mapApiKeyValue:"AIzaSyAuMGDLr2HeuRed4JA0CrdYYdZRjeC3EA"]
}
}
- Edite el archivo de manifiesto como a continuación.
parte de mi archivo manifiesto
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="${mapApiKeyValue}" />
Esta solución funciona para los últimos Android 5.0 y Android 6.0 (API 20, 21,22,23)
Actualizado el 3/05/2018 para Xamarin Form y Xamarin Native Apps
Abra AssemblyInfo.cs
en Android Project y agregue el siguiente código
#if DEBUG
[assembly: MetaData("com.google.android.maps.v2.API_KEY", Value = "DebugKey123123123")]
#else
[assembly: MetaData("com.google.android.maps.v2.API_KEY", Value = "ReleaseKey123123123")]
#endif
Para verificar el archivo AndroidManifest, vaya a la carpeta obj/Debug/android
y abra el archivo de manifiesto y verifique la metainformación,
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="DebugKey123123123" />
Como está usando gradle, puede hacer lo siguiente:
build.gradle
android {
.. .. ...
buildTypes {
debug {
resValue "string", "google_maps_api_key", "[YOUR DEV KEY]"
}
release {
resValue "string", "google_maps_api_key", "[YOUR PROD KEY]"
}
}
}
Y en su AndroidManifest.xml
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="@string/google_maps_api_key"/>
De esta forma, solo tienes un AndroidManifest.xml y estableces un valor en función de tu tipo de compilación. Espero que esto ayude.
Para las organizaciones que necesitan mantener claves separadas, puede colocarlas en directorios separados en Android Studio. Asegúrese de que el subdirectorio de src
que utiliza coincida con un flavor o buildType
Desde la construcción de su proyecto con Gradle :
To build each version of your app, the build system combines source code and resources from:
src/main/ - the main source directory (common to all variants)
src/<buildType>/ - the build type source directory
src/<flavorName>/ - the flavor source directory
En projectroot/yourapp/build.gradle
:
buildTypes {
debug {
runProguard false
debuggable true
}
release {
runProguard true
debuggable false
...
}
En projectroot/yourapp/src/main/AndroidManifest.xml
:
...
<application
android:name=".MyApplication"
android:theme="@style/Theme">
<!-- Don''t put your key here -->
...
En projectroot/yourapp/src/debug/AndroidManifest.xml
, califique completamente el nombre de la aplicación.
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<application android:name="com.hipmunk.android.HipmunkApplication">
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="yourdebugkey" />
</application>
</manifest>
En projectroot/yourapp/src/release/AndroidManifest.xml
:
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<application android:name="com.hipmunk.android.HipmunkApplication">
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="release key" />
</application>
</manifest>
Resolví este problema usando estos pasos:
En Google Developer API Console
- Haga clic en Crear nueva clave de Android ...
- En cmd.exe / Terminal:
keytool -list -v -keystore mystore.keystore
- Contraseña:
android
- Ahora ingrese la
SHA1 key;package name
para la depuración y presione enter - Ingrese la
SHA1 key;package name
para la publicación - Haga clic en Crear
Ahora usa esta clave de API tu proyecto
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="@string/common_map_api_key"/>