转换 Android Studio 项目新 API 密钥时遇到问题

Posted

技术标签:

【中文标题】转换 Android Studio 项目新 API 密钥时遇到问题【英文标题】:Trouble converting Android Studio project new API key 【发布时间】:2019-09-06 18:47:49 【问题描述】:

我在 2018 年创建了一个使用适用于 android 的 Google Maps SDK 的项目,它基本上是一个地理定位器。我现在正在尝试重新启动该项目,但是 Google 已经更改了如何将您的 API 密钥实现到您的程序中。有谁知道 2019 年将 API 密钥添加到 Android Studio 项目的常规方法。版本 3.3。

该项目起源于我的桌面,我有一段时间没有更新 android studio。我将项目加载到运行 Android Studio 3.3 的笔记本电脑上。它构建完美,功能完美,除了地图只会显示谷歌水印。

我现在应该把钥匙放在哪里?我读过它应该在 gradle.properties 中,但也在其他地方。那么有哪些常规方法可以让它发挥作用呢?

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.tommy.app">

    <!--
         The ACCESS_COARSE/FINE_LOCATION permissions are not required to use
         Google Maps Android API v2, but you must specify either coarse or fine
         location permissions for the 'MyLocation' functionality. 
    -->
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <!--
             The API key for Google Maps-based APIs is defined as a string resource.
             (See the file "res/values/google_maps_api.xml").
             Note that the API key is linked to the encryption key used to sign the APK.
             You need a different API key for each encryption key, including the release key that is used to
             sign the APK for publishing.
             You can define the keys for the debug and release targets in src/debug/ and src/release/. 
        -->
        <meta-data
            android:name="com.google.android.geo.API_KEY"
            android:value="@string/google_maps_key" />

        <activity
            android:name=".MapSearch"
            android:label="@string/title_activity_map_search">
            <meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value="com.example.tommy.app.MainActivity" />
        </activity>
        <activity
            android:name=".Map2"
            android:label="@string/title_activity_map2"></activity>
    </application>

</manifest>

地图应该对在第一个活动中输入的位置进行地理定位。

【问题讨论】:

【参考方案1】:

如果您在将项目机器移植到机器时遇到问题,只需通过 Google Cloud Development 转到 API 密钥凭据,找到您最初使用的密钥,为相同的项目名称添加新限制,但使用新的 SHA1 (来自新电脑)。查找密钥库以找出您的 SHA。

【讨论】:

以上是关于转换 Android Studio 项目新 API 密钥时遇到问题的主要内容,如果未能解决你的问题,请参考以下文章

解决android studio 创建新项目后假死

Android Studio新建项目

在 API 上添加新数据后如何在 android studio 上刷新 RecyclerView?

适用于 Android 的 Visual Studio 模拟器 - 项目未部署

android 怎么使用地图生成工具

Android studio生成api文档