J'utilise l'API Google Maps v2 dans mon projet. Dans Google Maps v2, la clé de l'API de débogage/libération est définie dans AndroidManifest.xml
. J'ai vu le lien mais dans cette clé de carte est définie dans un fichier de mise en page xml pas dans AndroidManifest.xml
. Puis-je définir les clés de débogage et de libération pour mon projet dans AndroidManifest.xml
?
Je veux quelque chose comme ça dans AndroidManifest.xml
:
Si mode débogage:
<meta-data
Android:name="com.google.Android.maps.v2.API_KEY"
Android:value="@string/debug_map_api_key"/>
Si mode de libération:
<meta-data
Android:name="com.google.Android.maps.v2.API_KEY"
Android:value="@string/release_map_api_key"/>
J'ai résolu ce problème en utilisant ces étapes:
Dans la console API des développeurs Google
keytool -list -v -keystore mystore.keystore
Android
SHA1 key;package name
pour déboguer et appuyer sur entréeSHA1 key;package name
pour publicationUtilisez maintenant cette clé API pour votre projet
<meta-data
Android:name="com.google.Android.maps.v2.API_KEY"
Android:value="@string/common_map_api_key"/>
Eh bien, vous pouvez les utiliser simplement sans créer de saveurs de produit dans gradle
. Ceci est un autre exemple que nous pouvons obtenir via Gradle
. Vous pouvez y parvenir en deux étapes simples.
manifestplaceholders
build.gradle.Voir ci-dessous
buildTypes {
debug {
manifestPlaceholders = [ mapApiKeyValue:"GHjaSyAjlyp3O831lgaonHMXsd-_DpQ3002x3S4"]
}
release {
manifestPlaceholders = [ mapApiKeyValue:"AIzaSyAuMGDLr2HeuRed4JA0CrdYYdZRjeC3EA"]
}
}
une partie de mon fichier manifeste
<meta-data
Android:name="com.google.Android.maps.v2.API_KEY"
Android:value="${mapApiKeyValue}" />
Cette solution fonctionne pour les derniers Android 5.0 et Android 6.0 (API 20, 21,22,23)
Ouvert AssemblyInfo.cs
in Android Projetez et ajoutez le code suivant
#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
Pour vérifier le fichier AndroidManifest, passez à obj/Debug/Android
dossier et ouvrez le fichier manifeste et vérifiez les méta-informations,
<meta-data
Android:name="com.google.Android.maps.v2.API_KEY"
Android:value="DebugKey123123123" />
Pour les organisations qui doivent conserver des clés distinctes, vous pouvez les placer dans des répertoires distincts dans Android Studio. Assurez-vous que le sous-répertoire de src
que vous utilisez correspond à une saveur ou buildType
De Construire votre projet avec 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
Dans projectroot/yourapp/build.gradle
:
buildTypes {
debug {
runProguard false
debuggable true
}
release {
runProguard true
debuggable false
...
}
Dans projectroot/yourapp/src/main/AndroidManifest.xml
:
...
<application
Android:name=".MyApplication"
Android:theme="@style/Theme">
<!-- Don't put your key here -->
...
Dans projectroot/yourapp/src/debug/AndroidManifest.xml
, qualifiez entièrement le nom de l'application.
<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>
Dans 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>
Puisque vous utilisez gradle, vous pouvez effectuer les opérations suivantes:
build.gradle
Android {
.. .. ...
buildTypes {
debug {
resValue "string", "google_maps_api_key", "[YOUR DEV KEY]"
}
release {
resValue "string", "google_maps_api_key", "[YOUR PROD KEY]"
}
}
}
Et dans votre AndroidManifest.xml
<meta-data
Android:name="com.google.Android.maps.v2.API_KEY"
Android:value="@string/google_maps_api_key"/>
De cette façon, vous n'avez qu'un seul fichier AndroidManifest.xml et vous définissez une valeur en fonction de votre type de build. J'espère que cela t'aides.