高德API接入安卓相关问题说明

news2024/9/25 21:29:58

在这里插入图片描述

高德API接入安卓相关问题说明

我们都在怀念过去,失去后我们才懂得珍惜,有些人或事早已经远去,可是还是会想起曾经拥有的岁月,会是一种喜悦,会是一种遗憾……

目前Android开发已经普遍使用Android Studio,开放平台相关的产品都需要使用KEY,生成KEY需要的签名文件的SHA1和app包名,具体的申请步骤官网有详细说明,这里不再赘述。但是现在还有好多开发者按照步骤申请key之后,打包之后仍然会出现鉴权失败,主要原因是签名文件的SHA1和申请key的签名文件不一致造成的,这里就主要介绍一下Android Studio配置签名文件和需要注意问题。

配置签名文件

方法一——使用Android Studio生成

1.打开 Android Studio,点击菜单栏的 Build 选项,然后选择 Generate Signed Bundle/APK。

image-20240709120605683

2.在弹出的窗口中,选择 APK,然后点击 Next 继续。

image-20240709120521246

3.点击 Create new… 按钮创建一个新的密钥库文件(Keystore File)。

image-20240709120647963

4.在弹出的窗口中,选择一个存储位置和文件名,然后设置一个密码用于保护密钥库文件。

image-20240709120705216

5.填写密钥库的详细信息,包括别名(Alias)、密码、有效期等。
6. 查看SHA1签名

生成keystore文件后,您可以使用以下命令获取SHA1签名:

keytool -list -v -keystore [your_keystore_name].keystore -alias [your_alias_name]

示例:

keytool -list -v -keystore my-release-key.keystore -alias my-key-alias

运行该命令后,您将看到类似以下输出:

Keystore type: JKS
Keystore provider: SUN

Your keystore contains 1 entry

Alias name: my-key-alias
Creation date: [date]
Entry type: PrivateKeyEntry
Certificate chain length: 1
Certificate[1]:
Owner: CN=[Your Name], OU=[Your Organizational Unit], O=[Your Organization], L=[Your City], ST=[Your State], C=[Your Country Code]
Issuer: CN=[Your Name], OU=[Your Organizational Unit], O=[Your Organization], L=[Your City], ST=[Your State], C=[Your Country Code]
Serial number: [serial number]
Valid from: [start date] until: [end date]
Certificate fingerprints:
         MD5:  [your MD5 fingerprint]
         SHA1: [your SHA1 fingerprint]
         SHA256: [your SHA256 fingerprint]
Signature algorithm name: SHA256withRSA
Subject Public Key Algorithm: 2048-bit RSA key
Version: 3

在输出中找到SHA1指纹,并将其用于高德地图API令牌配置。

通过以上步骤,您可以生成签名文件并获取SHA1签名,用于配置高德地图API令牌,确保应用的正确发布和使用。

方法二——命令生成

1. 生成签名文件(keystore)

使用keytool命令生成签名文件。keytool是JDK自带的工具,用于生成和管理密钥对及证书。

执行以下命令生成签名文件:

keytool -genkey -v -keystore [your_keystore_name].keystore -alias [your_alias_name] -keyalg RSA -keysize 2048 -validity 10000

示例:

keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000

在运行该命令时,您将被提示输入以下信息:

  • Keystore密码: 为您的keystore设置一个密码。
  • 姓名与姓氏: 输入您的全名。
  • 组织单位名称: 输入您的组织单位名称,如部门或团队。
  • 组织名称: 输入您的公司或组织的名称。
  • 城市或地区名称: 输入您的城市或地区名称。
  • 省/市/自治区名称: 输入您的省份或州的名称。
  • 国家代码: 输入您的国家代码,如“CN”代表中国。
  • 确认信息: 确认输入的信息是否正确。
  • 密钥密码: 为您的密钥设置一个密码。如果与keystore密码相同,可以直接按回车。

完成这些步骤后,您的keystore文件将被生成。

2. 获取SHA1签名

生成keystore文件后,您可以使用以下命令获取SHA1签名:

keytool -list -v -keystore [your_keystore_name].keystore -alias [your_alias_name]

示例:

keytool -list -v -keystore my-release-key.keystore -alias my-key-alias

运行该命令后,您将看到类似以下输出:

Keystore type: JKS
Keystore provider: SUN

Your keystore contains 1 entry

Alias name: my-key-alias
Creation date: [date]
Entry type: PrivateKeyEntry
Certificate chain length: 1
Certificate[1]:
Owner: CN=[Your Name], OU=[Your Organizational Unit], O=[Your Organization], L=[Your City], ST=[Your State], C=[Your Country Code]
Issuer: CN=[Your Name], OU=[Your Organizational Unit], O=[Your Organization], L=[Your City], ST=[Your State], C=[Your Country Code]
Serial number: [serial number]
Valid from: [start date] until: [end date]
Certificate fingerprints:
         MD5:  [your MD5 fingerprint]
         SHA1: [your SHA1 fingerprint]
         SHA256: [your SHA256 fingerprint]
Signature algorithm name: SHA256withRSA
Subject Public Key Algorithm: 2048-bit RSA key
Version: 3

在输出中找到SHA1指纹,并将其用于高德地图API令牌配置。

通过以上步骤,您可以生成签名文件并获取SHA1签名,用于配置高德地图API令牌,确保应用的正确发布和使用。

build.gradle配置签名文件

image-20240709121306768

在Android应用开发中,生成的签名文件(keystore)需要在Gradle构建文件中配置,以便在编译和打包应用时进行签名。以下是如何在build.gradle文件中配置签名文件的详细介绍:

配置签名文件(keystore)

1. 创建签名文件(keystore)

首先,确保您已经按照之前介绍的步骤生成了签名文件(keystore),并获取了相关信息(如keystore文件路径、storePassword、keyPassword和keyAlias)。

2. 配置build.gradle文件

在项目的build.gradle文件中,添加签名配置。通常,这些配置会放在android块中的signingConfigs块内。

以下是配置示例:

android {
    ...

    signingConfigs {
        release {
            storeFile file('E:\\****nce\\********tendance.jks')
            storePassword '888888'
            keyPassword '888888'
            keyAlias 'key0'
        }
    }

    buildTypes {
        release {
            signingConfig signingConfigs.release
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

配置项详细介绍

  1. signingConfigs:

    • release: 这是签名配置的名称,您可以根据需要自定义。这里使用release表示发布版本的签名配置。
  2. storeFile:

    • file('E:\\****nce\\********tendance.jks'): 指定keystore文件的路径。在Windows系统中,路径使用反斜杠(\\)。
  3. storePassword:

    • '888888': keystore文件的密码。这个密码是在生成keystore文件时设置的。
  4. keyPassword:

    • '888888': 密钥的密码。这个密码是在生成密钥对时设置的。
  5. keyAlias:

    • 'key0': 密钥别名。在生成keystore文件时设置的别名。
  6. buildTypes:

    • release: 配置发布版本的构建类型。
    • signingConfig signingConfigs.release: 指定使用上面定义的release签名配置。
    • minifyEnabled false: 是否启用代码混淆,这里设置为false表示不启用。
    • proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro': 指定ProGuard配置文件,用于代码混淆。

应用签名配置

确保将签名配置应用到您的构建类型中,例如release版本。这样,Gradle在编译和打包发布版本时会使用指定的keystore文件进行签名。

通过以上步骤,您可以在build.gradle文件中正确配置签名文件,确保在编译和打包应用时使用正确的数字签名。这样可以确保应用在发布时符合安全和完整性要求,并且能够在配置了SHA1签名的高德地图API令牌环境中正常运行。

申请高德API

image-20240709121606165

要在高德地图平台上申请API Key,并确保应用能够正确使用高德地图的服务,可以按照以下步骤操作:

1. 注册和登录高德地图开发者平台

  • 访问高德地图开发者平台: 打开 高德地图开放平台.
  • 注册账号: 如果您没有账号,请点击注册并填写相关信息创建一个新账号。
  • 登录: 如果已经有账号,直接登录。

2. 创建应用

  • 进入开发者中心: 登录后,点击页面右上角的头像,选择“开发控制台”。
  • 选择应用管理: 在左侧导航栏中选择“应用管理”。
  • 创建应用: 点击“创建应用”按钮。
  • 填写应用信息: 在弹出的页面中,填写应用名称、选择应用类型(如iOS、Android、Web服务等),并填写相关信息。
  • 提交信息: 确认无误后,点击“确定”提交信息。

3. 获取API Key(密钥)

  • 进入应用详情页: 在应用管理页面中找到刚刚创建的应用,点击应用名称进入详情页。
  • 新增Key: 在应用详情页中找到“Key管理”,点击“新增Key”按钮。
  • 选择服务类型: 选择您需要的服务类型(如“定位SDK”、“地图SDK”等)。
  • 填写Key信息: 根据提示填写相关信息。
    • 平台类型: 选择Android、iOS或者其他。
    • 包名(Android): 填写您的应用包名。在项目的app模块中,找到并打开AndroidManifest.xml文件。包名通常在<manifest>标签中的package属性中定义。
    • SHA1(Android): 填写您的应用SHA1签名。
    • Bundle ID(iOS): 填写您的应用Bundle ID。

4. 配置包名和SHA1签名(Android应用)

对于Android应用,您需要在创建Key时填写正确的包名和SHA1签名。以下是获取SHA1签名的步骤:

  1. 打开终端或命令行:

    • 在Android Studio中打开终端,或者在操作系统的命令行工具中输入以下命令:
    keytool -list -v -keystore [your_keystore_path] -alias [your_alias_name]
    
  2. 执行命令:

    • 替换[your_keystore_path]为您生成的keystore文件路径,[your_alias_name]为您生成密钥对时设置的别名。
  3. 查看输出:

    • 执行命令后,您将看到类似以下的输出:
    Keystore type: JKS
    Keystore provider: SUN
    
    Your keystore contains 1 entry
    
    Alias name: key0
    Creation date: [date]
    Entry type: PrivateKeyEntry
    Certificate chain length: 1
    Certificate[1]:
    Owner: CN=[Your Name], OU=[Your Organizational Unit], O=[Your Organization], L=[Your City], ST=[Your State], C=[Your Country Code]
    Issuer: CN=[Your Name], OU=[Your Organizational Unit], O=[Your Organization], L=[Your City], ST=[Your State], C=[Your Country Code]
    Serial number: [serial number]
    Valid from: [start date] until: [end date]
    Certificate fingerprints:
             MD5:  [your MD5 fingerprint]
             SHA1: [your SHA1 fingerprint]
             SHA256: [your SHA256 fingerprint]
    Signature algorithm name: SHA256withRSA
    Subject Public Key Algorithm: 2048-bit RSA key
    Version: 3
    
    • 在输出中找到SHA1指纹,并将其填写到高德地图开发者平台上的相应字段中。

5. 激活服务权限

  • 确认服务权限: 在应用详情页的“服务管理”中,确保您需要的服务(如定位服务、地图服务等)已启用。
  • 保存设置: 确认无误后,点击“保存”按钮。

6. 使用API Key

  • 在应用的代码中,使用获取的API Key进行配置。例如,在Android中,可以在AndroidManifest.xml中添加:

    <meta-data
        android:name="com.amap.api.v2.apikey"
        android:value="您的API Key"/>
    

7. 测试和发布

  • 测试应用: 在应用中集成高德地图的功能后,进行测试,确保能够正常获取定位信息。
  • 发布应用: 完成测试后,可以将应用发布到应用市场。注意,发布时使用的包名和签名必须与高德地图平台上配置的一致。

高德地图API Key错误的排查方法

latitude=0.0#longitude=0.0#province=#coordType=GCJ02#city=#district=#cityCode=#adCode=#address=#country=#road=#poiName=#street=#streetNum=#aoiName=#poiid=#floor=#errorCode=7#errorInfo=KEY错误#locationDetail=auth fail:INVALID_USER_SCODE#SHA1AndPackage#03:3A:AB:E6:C1:EC:0A:7B:A6:F4:12:A3:81:10:C5:FB:93:43:44:0B:com.zhenqi.ningxiaattandance#gsid#033004090204172049148400000029730029110#csid#1ed166f6a0d24ec1901a9b022c734157#0701#description=#locationType=0#conScenario=0

当高德地图API返回KEY错误时,可以按照以下步骤进行排查:

1.检查Keystore文件:

  • 确认您当前的app使用的Keystore文件与您申请高德API Key时提供的SHA1值的Keystore文件是否一致。

2.检查meta-data配置:

  • 确认您的API Key在AndroidManifest.xml文件中的meta-data标签中是否正确配置,并且没有多余的空格或其他字符。
<meta-data
    android:name="com.amap.api.v2.apikey"
    android:value="您的API Key"/>

3.使用debug.keystore进行测试:

  • 您可以尝试使用debug.keystore的SHA1值申请一个API Key进行测试。获取debug.keystore的SHA1值的代码如下:
public static String sHA1(Context context) {
    try {
        PackageInfo info = context.getPackageManager().getPackageInfo(
                context.getPackageName(), PackageManager.GET_SIGNATURES);
        byte[] cert = info.signatures[0].toByteArray();
        MessageDigest md = MessageDigest.getInstance("SHA1");
        byte[] publicKey = md.digest(cert);
        StringBuffer hexString = new StringBuffer();
        for (int i = 0; i < publicKey.length; i++) {
            String appendString = Integer.toHexString(0xFF & publicKey[i])
                    .toUpperCase(Locale.US);
            if (appendString.length() == 1)
                hexString.append("0");
            hexString.append(appendString);
        }
        return hexString.toString();
    } catch (PackageManager.NameNotFoundException e) {
        e.printStackTrace();
    } catch (NoSuchAlgorithmException e) {
        e.printStackTrace();
    }
    return null;
}

4.检查包名:

  • 确认您在高德地图开发者平台上注册应用时填写的包名与您的应用实际包名是否一致。包名不一致是一个常见错误。在项目的app模块中,找到并打开AndroidManifest.xml文件。包名通常在<manifest>标签中的package属性中定义。

    包名也可以在 Gradle 配置文件中找到。在 Android 应用的 Gradle 构建脚本中,有一个名为 applicationId 的属性,它就是应用的包名。这个属性在 defaultConfig 块中进行定义和配置。

    例如,在 build.gradle 文件中可以找到如下所示的配置:

    android {
        ...
        defaultConfig {
            applicationId "com.example.yourapp"
            minSdkVersion 21
            targetSdkVersion 31
            versionCode 1
            versionName "1.0"
            ...
        }
        ...
    }
    

    在这个例子中,applicationId 的值是 "com.example.yourapp",这就是应用的包名。这个值是在构建和打包应用时使用的唯一标识符。

    通过查看和确认这个 applicationId 属性,您可以确保在申请高德地图 API Key 时填写的包名与实际应用的包名一致,避免因包名不匹配而导致的 API Key 错误问题。

5.等待Key生效:

  • 刚申请的API Key需要等待大约15分钟才能生效,请耐心等待后再进行尝试。

通过以上步骤,您可以有效排查和解决高德地图API Key的错误问题。确保所有配置正确无误后,API Key即可正常使用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1909889.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

优思学院|当今的丰田精益生产模式落伍了吗?

丰田曾经是全球销量最大的汽车制造商&#xff0c;不过现在却被挖苦为可能会成为下一个汽车界的“诺基亚”。 丰田的前CEO丰田章男对于电动汽车的前景持极度怀疑态度&#xff0c;今年4月他下台&#xff0c;由年轻14岁的佐藤恒治接任。这一变动反映了丰田对电动汽车态度的180度大…

streamlit table转置显示

streamlit table转置显示,并且原始的表头放在最左侧 原始表格 代码 import streamlit as st import pandas as pd# 创建一个示例 DataFrame data {Column1: [1, 2, 3],Column2: [4, 5, 6],Column3: [7, 8, 9] } df pd.DataFrame(data)# 转置 DataFrame transposed_df df.T…

进程,进程的调度,进程的调度算法(详解)ฅ( ̳• · • ̳ฅ)

目录 &#x1f607;进程的概念&#xff1a; &#x1f61a;进程的组成&#xff1a; &#x1f970;进程的调度&#xff1a; 一.进程调度的概念&#xff1a; 二.进程调度的方式&#xff1a; 三.进程调度的时机&#xff1a; &#x1f92a;进程的调度算法&#xff1a; 一.先…

如何通过运动改善老年人的腿部肌肉力量?

老年人腿部肌肉力量的重要性 随着年龄的增长&#xff0c;肌肉自然会逐渐萎缩&#xff0c;特别是腿部肌肉。腿部肌肉的强弱直接影响到老年人的行走能力、平衡能力和日常生活的自理能力。因此&#xff0c;通过适当的运动来改善和增强腿部肌肉力量对于老年人来说至关重要。 适合老…

1Panel安装教程:使用Linux服务器安装1Panel面板全流程

使用阿里云服务器安装1Panel面板全流程&#xff0c;云服务器操作系统为CentOS 7.9&#xff0c;安装1Panel非常简单&#xff0c;先执行1Panel安装命令&#xff0c;然后在云服务器安全组中开通1Panel默认端口号、安全入口、用户名和密码等操作&#xff0c;阿里云百科整理详细安装…

前端八股文 跨域

前端跨域和常见解决方案 一、什么是跨域 同源策略是一个重要的安全策略&#xff0c;它用于限制一个origin的文档或者它加载的脚本如何能与另一个源的 资源进行交互。它能帮助阻隔恶意文档&#xff0c;减少可能被攻击的媒介。 有一点必须要注意&#xff1a;跨域并不是请求发不…

Unity插件 Unitask学习日志

Unity插件 Unitask学习日志 下载地址 https://github.com/Cysharp/UniTask点击这里可以查阅中文文档 在Unity 2020,2021 中使用UPM下载会找不到&#xff0c;可以使用2022版本的unity可以在upm中找到。 安装方式&#xff1a; 下载zip之后解压&#xff0c; 复制Plugins 到Uni…

化工厂定位系统有哪些功能?

有伙伴了解化工厂定位系统吗&#xff1f;相信很多小伙伴都没有听说过&#xff0c;感觉离我们的生活比较远&#xff0c;事实上化工厂定位系统也是默默的在保护我们的安全。今天新锐科创就给大家介绍一下这个系统&#xff0c;让大家简单的了解一下。 大家都知道化工厂一直是一个比…

【LLM大模型】如何在LlamaIndex中使用RAG?

如何在LlamaIndex中使用RAG 什么是 Llama-Index LlamaIndex 是一个数据框架&#xff0c;用于帮助基于 LLM 的应用程序摄取、构建结构和访问私有或特定领域的数据。 如何使用 Llama-Index ? 基本用法是一个五步流程&#xff0c;将我们从原始、非结构化数据导向基于该数据生成…

本地部署 SenseVoice - 阿里开源语音大模型

本地部署 SenseVoice - 阿里开源语音大模型 1. 创建虚拟环境2. 克隆代码3. 安装依赖模块4. 启动 WebUI5. 访问 WebUI 1. 创建虚拟环境 conda create -n sensevoice python3.11 -y conda activate sensevoice 2. 克隆代码 git clone https://github.com/FunAudioLLM/SenseVoic…

【Linux进阶】文件系统2——MBR和GPT

1.磁盘的分区 因为如果你的磁盘被划分成两个分区&#xff0c;那么每个分区的设备文件名是什么&#xff1f; 在了解这个问题之前&#xff0c;我们先来复习一下磁盘的组成&#xff0c;因为现今磁盘的划分与它物理的组成很有关系。 我们谈过磁盘主要由碟片、机械手臂、磁头与主轴马…

C++Windows环境搭建(CLion)

文章目录 CLion下载安装CLion下载CLion安装新建项目 CLion下载安装 CLion下载 打开网址&#xff1a;https://www.jetbrains.com/clion/download/ 点击Download进行下载。 CLion安装 双击下载好的安装包&#xff1a; 进入到安装页面&#xff0c;点击下一步&#xff1a; 选…

【粉丝福利 | 第8期】值得收藏!推荐10个好用的数据血缘工具

⛳️ 写在前面参与规则&#xff01;&#xff01;&#xff01; ✅参与方式&#xff1a;关注博主、点赞、收藏、评论&#xff0c;任意评论&#xff08;每人最多评论三次&#xff09; ⛳️本次送书1~4本【取决于阅读量&#xff0c;阅读量越多&#xff0c;送的越多】 目前市面上绝…

无人直播系统源码开发:功能~优势~开发方法

自动直播通常是指通过自动化技术来实现实时内容分发的过程&#xff0c;它结合了流媒体技术和人工智能&#xff08;如机器学习&#xff09;。以下是自动直播实现的基本步骤&#xff1a; 内容采集&#xff1a;通过摄像头、手机等设备捕捉实时画面&#xff0c;并通过编码将其转换成…

如何理解http与https协议,他们有什么区别?

写在前面的话&#xff0c;关于 HTTP 和 HTTPS 的问题&#xff0c;常常会被很多学习者忽略&#xff0c;HTTP、HTTPS 不就是网址的开头吗&#xff0c;有啥好了解的&#xff0c;浏览器的引擎实现了这个协议&#xff0c;在开发关系不大&#xff0c;但想要深入一些理解数据传输原理&…

NPDP有什么价值?究竟值不值得去考?

NPDP其实就是产品经理国际资格认证&#xff0c;是美国产品开发管理协会发起的&#xff0c;集理论、方法和实践一体&#xff0c;在新产品开发方面有一个很全面的知识体系。是国际公认的新产品开发专业认证&#xff0c;具有权威性。 NPDP能够很好地帮你在做新产品的道路上少走弯…

SpringSecurity中文文档(Servlet Method Security)

Method Security 除了在请求级别进行建模授权之外&#xff0c;Spring Security 还支持在方法级别进行建模。 您可以在应用程序中激活它&#xff0c;方法是使用EnableMethodSecurity 注释任何Configuration 类&#xff0c;或者将 < method-security > 添加到任何 XML 配…

RK3588开发笔记(四):基于定制的RK3588一体主板升级镜像

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/140288662 长沙红胖子Qt&#xff08;长沙创微智科&#xff09;博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV…

多次执行相同的push问题(如何解决)

下面这个问题如何解决 1.为什么会出现这个问题 原因&#xff1a;push是一个promise&#xff0c;promise需要传递成功和失败两个参数&#xff0c;我们的push中没有传递。 goSearch() {//路由传参//第一种&#xff1a;字符串形式// this.$router.push(/search/this.keyword&quo…

【Linux进阶】文件系统3——目录树,挂载

前言 在Windows 系统重新安装之前&#xff0c;你可能会事先考虑&#xff0c;到底系统盘C盘要有多大容量&#xff1f;而数据盘D盘又要给多大容量等&#xff0c;然后实际安装的时候&#xff0c;你会发现其实C盘之前会有个100MB的分区被独立出来&#xff0c;所以实际上你就会有三个…