首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安卓:自动选择调试/发布地图v2应用编程接口密钥?

安卓:自动选择调试/发布地图v2应用编程接口密钥?
EN

Stack Overflow用户
提问于 2013-06-17 13:40:05
回答 3查看 27.6K关注 0票数 44

我在我的项目中使用了谷歌地图v2应用编程接口。在Google Maps中,调试/发布v2密钥是在AndroidManifest.xml中定义的。我见过the link,但在映射中,键是在xml布局文件中定义的,而不是在AndroidManifest.xml中定义的。那么,我是否可以在AndroidManifest.xml中为我的项目同时定义调试密钥和发布密钥呢

我想在AndroidManifest.xml中实现这样的功能

如果是调试模式:

代码语言:javascript
复制
<meta-data
    android:name="com.google.android.maps.v2.API_KEY"
    android:value="@string/debug_map_api_key"/>

如果是释放模式:

代码语言:javascript
复制
<meta-data
    android:name="com.google.android.maps.v2.API_KEY"
    android:value="@string/release_map_api_key"/>
EN

回答 3

Stack Overflow用户

发布于 2016-09-01 15:49:52

在最新的安卓5.0和安卓6.0中使用build.gradle文件的最佳方式之一,安卓9+ (API 20,21,22,23,24,25,26,27 28,29)

您可以简单地使用它们,而不需要在gradle中创建产品风格。这是我们可以通过Gradle实现的另一个示例。只需两个简单的步骤即可实现。

  • 将自定义值添加到manifestplaceholders build.gradle文件。

见下文

代码语言:javascript
复制
buildTypes {
    debug {
        manifestPlaceholders = [ mapApiKeyValue:"GHjaSyAjlyp3O831lgaonHMXsd-_DpQ3002x3S4"]
    }

    release {
        manifestPlaceholders = [ mapApiKeyValue:"AIzaSyAuMGDLr2HeuRed4JA0CrdYYdZRjeC3EA"]
    }
}

  • 编辑清单文件,如下所示。

我的清单文件的一部分

代码语言:javascript
复制
  <meta-data
        android:name="com.google.android.maps.v2.API_KEY"
        android:value="${mapApiKeyValue}" />

此解决方案适用于最新的Android 5.0和Android 6.0 (API 20、21、22、23)

Xamarin Form和Xamarin Native Apps于2018年5月3日更新

在安卓项目中打开AssemblyInfo.cs并添加以下代码

代码语言:javascript
复制
#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

要检查AndroidManifest文件,请转到obj/Debug/android文件夹并打开清单文件,然后检查元信息。

代码语言:javascript
复制
<meta-data
        android:name="com.google.android.maps.v2.API_KEY"
        android:value="DebugKey123123123" />
票数 32
EN

Stack Overflow用户

发布于 2014-08-13 02:00:27

对于需要维护单独密钥的组织,您可以将它们放在Android Studio中的单独目录中。确保您使用的src的子目录与某种风格或buildType相匹配

来自Building Your Project with Gradle

代码语言:javascript
复制
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

projectroot/yourapp/build.gradle

代码语言:javascript
复制
buildTypes {
    debug {
        runProguard false
        debuggable true

    }
    release {
        runProguard true
        debuggable false
        ...
    }

projectroot/yourapp/src/main/AndroidManifest.xml

代码语言:javascript
复制
...
<application
    android:name=".MyApplication"
    android:theme="@style/Theme">
<!-- Don't put your key here -->
...

projectroot/yourapp/src/debug/AndroidManifest.xml中,完全限定应用程序的名称。

代码语言:javascript
复制
<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>

projectroot/yourapp/src/release/AndroidManifest.xml

代码语言:javascript
复制
<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>
票数 16
EN

Stack Overflow用户

发布于 2017-06-22 19:46:01

由于您使用的是gradle,因此可以执行以下操作:

build.gradle

代码语言:javascript
复制
android {
  .. .. ...
    buildTypes {
       debug {
          resValue "string", "google_maps_api_key", "[YOUR DEV KEY]"
       }
       release {
           resValue "string", "google_maps_api_key", "[YOUR PROD KEY]"
       }
    }
  }

在你的AndroidManifest.xml

代码语言:javascript
复制
<meta-data
            android:name="com.google.android.maps.v2.API_KEY"
            android:value="@string/google_maps_api_key"/>

这样,您只有一个AndroidManifest.xml,并根据您的构建类型设置值。希望这能有所帮助。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17141008

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档