【unity接入SDK案例】从0到1 如何接入百度地图SDK到unity中【二】


👨‍💻个人主页@元宇宙-秩沅

👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅!

👨‍💻 本文由 秩沅 原创

👨‍💻 收录于专栏Unity基础实战

⭐🅰️⭐



文章目录


⭐前言⭐


🎶(1) 百度地图Android SDK下载


下载入口


🎶(2) 下载Android Studio


下载入口

android studio版本是:2021.2.1.16,

  • 打开后 点击SDK Manager 我们需要更改一下SDK的安装路径

  • 选择自己新建的文件夹,更改路径

  • SDK位置已更新

  • 完成


🎶(3) Android Studio工程配置


  • Step 1 :创建一个Empty 项目:
  • 第一次创建项目会比较慢,等待加载完成即可

等待第一次加载完毕,而后部署签证

为什么要进行生成签名捆绑包

在Android开发中,部署签名和密钥库是用于对应用进行数字签名和加密的一种机制。

部署签名是通过使用开发者的私钥对应用进行签名的过程。签名后的应用可以用于发布到Google Play商店或其他渠道进行分发。签名后的应用可以确保应用的完整性和来源的真实性,防止被篡改或恶意修改。

密钥库是存储和管理密钥的文件。在Android开发中,通常使用Java密钥库(JKS)格式的文件来存储密钥。密钥库可以包含多个密钥对,每个密钥对都有一个相关的私钥和公钥。在部署签名过程中,开发者需要使用密钥库中的私钥对应用进行签名。

部署签名和密钥库在Android开发中扮演着重要的角色,不仅可以确保应用的完整性和来源的真实性,还可以保护应用的安全性。


  • 选择build - Generate Signed Bundle or APK(生成签名捆绑包或APK)
  • 此时我选择新建一个key Store
  • 选择 release版本,后点击finish

🎶(4)获取AK和SHA1


什么是AK?

在百度地图中,AK 是 Access Key 的缩写,也被称为 API Key。每个使用百度地图 API 的开发者都需要申请一个 AK,用于身份验证和授权。AK 是一个字符串,类似于一个密码,用于标识和限制对百度地图 API 的访问权限。开发者在使用百度地图 API 时,需要将自己的 AK 嵌入到 API 请求中,以正确地调用和使用地图功能。每个 AK 都有一定的访问频率和配额限制,以保障服务的稳定性和可用性。

  • 百度地图官网进行认证
  • 点击我的应用,进行新应用的创建,类型为android SDK ,名字自命名,而后填写需要的SHA1
什么是SHA1呢?

SHA 1 _哈希算法。SHA1是一种加密算法,全称是Secure Hash Algorithm 1。在Android开发中,SHA1通常用于生成密钥、认证和数据完整性检查等方面。SHA1算法会将输入的数据(例如字符串、文件等)转换为一个固定长度的哈希值,通常是160位的二进制值。这个哈希值是唯一的,相同的输入将始终生成相同的哈希值,而不同的输入生成的哈希值几乎是完全不同的。SHA1在很多场景中被广泛使用,如数字签名、密码存储、消息认证等。在Android中,SHA1也常用于在应用程序中生成唯一标识符和签名验证等方面。

那么怎么获取SHA1呢

  • 首先调式版本的SHA1,获取步骤如下:
    打开cmd -> cd.android --->keytool -list -v -keystore debug.keystore
  • 其中发布版SHA1的密钥文件是你自己创建keystore时生成的JKS文件,如何获取?见下一步
  • 在自己创建得keystore 路径中 打开DOS界面输入指令 keytool -list -v -keystore + 文件名及后缀
JKS文件和Keystore文件的区别:

JKS格式的文件和Keystore格式的文件都是用于存储密钥和证书的文件格式,但两者之间有一些区别:

  1. 文件扩展名:JKS格式的文件扩展名为.jks,而Keystore格式的文件扩展名可以是.jks、.jceks、.p12、.pfx等。
  2. 文件结构:JKS格式的文件是Java Key Store格式,是以Java KeyStore API为基础的专用格式,它可以存储多个密钥和证书,并使用别名进行引用。Keystore格式的文件可以是不同的类型,如PKCS#12、JKS等,但它们都可以包含一个或多个密钥和证书。
  3. 密钥类型:JKS格式的文件可以存储不同类型的密钥,包括私钥、公钥、对称密钥等。Keystore格式的文件也可以存储不同类型的密钥,但具体支持的密钥类型取决于文件的格式和使用的API。
  4. 兼容性:JKS格式的文件是Java特定的格式,主要用于Java应用程序和工具。Keystore格式的文件可以在不同的平台和语言中使用,因为它们可以基于公共的密钥存储标准如PKCS#12。
    总的来说,JKS格式的文件是Java特定的密钥存储格式,适用于Java环境中的应用程序和工具。而Keystore格式的文件是一种通用的密钥存储格式,可以在不同的平台和语言中使用。
  • 创建一个Unity工程,环境为安卓环境

  • 而后PackageName 要与Unity工程的PackageName保持一致

  • 提交后即可显示新建应用


🎶(5)百度SDK导入unity


  • 创建一个简易的Button按钮
  • 编写其按钮在安卓模式下的交互脚本
csharp 复制代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
//-------------------------------------
//---------------------------------------------------------------------------------------------------------------
//___________项目:       ______________
//___________功能:  按钮响应百度地图的接入
//___________创建者:_______秩沅_____
//_____________________________________
//-------------------------------------
public class Onclick : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        
    }

    /// <summary>
    /// 点击按钮时调用
    /// </summary>
    public void OnButtonClick()
    {

#if UNITY_EDITOR//平台判断语句
        Debug.Log("进入编辑器模式!");
#endif

#if UNITY_ANDROID
        Debug.Log("进入安卓模式");
        var pl = new AndroidJavaClass("com.DefaultCompany.BaiduMap.UnityPlayer");
        var activity = pl.GetStatic<AndroidJavaObject>("currentActicity");
        var args = new string[2] { "param1", "param2" };
        activity.Call("Unity2AndroidFunc",args[0],args[1]);          
#endif  
    }
}

  • 在Asset文件夹下新建一个Plugins/Android文件夹,把下载的百度SDK"中的这几个文件夹拖到到这个文件夹下面

🎶(6)Unity安卓平台打包


  • step1: 首先在 Building setting ------Player setting 中设置公司名,游戏名
  • step2: 查看包名
  • step3: 打开Keystore Manager密钥库管理器新建签名

  • step4:填写发布相关(Publishing Setting)的信息

  • step5 :纹理压缩(Texture Compression)选择 ETC2

  • step6: 勾选Export Project (导出用于Android Studio 的 Gradle文件)而后点击导出 Export
  • 导出后如下所示

后续见下一章节

⭐🅰️⭐



【Unityc#专题篇】之c#进阶篇】

【Unityc#专题篇】之c#核心篇】

【Unityc#专题篇】之c#基础篇】

【Unity-c#专题篇】之c#入门篇】

【Unityc#专题篇】---进阶章题单实践练习

【Unityc#专题篇】---基础章题单实践练习

【Unityc#专题篇】---核心章题单实践练习


你们的点赞👍 收藏⭐ 留言📝 关注✅是我持续创作,输出优质内容的最大动力!



相关推荐
Winston Wood17 分钟前
Android Parcelable和Serializable的区别与联系
android·序列化
清风徐来辽22 分钟前
Android 项目模型配置管理
android
帅得不敢出门1 小时前
Gradle命令编译Android Studio工程项目并签名
android·ide·android studio·gradlew
problc1 小时前
Flutter中文字体设置指南:打造个性化的应用体验
android·javascript·flutter
逐·風7 小时前
unity关于自定义渲染、内存管理、性能调优、复杂物理模拟、并行计算以及插件开发
前端·unity·c#
_oP_i8 小时前
Unity Addressables 系统处理 WebGL 打包本地资源的一种高效方式
unity·游戏引擎·webgl
帅得不敢出门12 小时前
安卓设备adb执行AT指令控制电话卡
android·adb·sim卡·at指令·电话卡
代码盗圣12 小时前
GODOT 4 不用scons编译cpp扩展的方法
游戏引擎·godot
我又来搬代码了14 小时前
【Android】使用productFlavors构建多个变体
android
德育处主任15 小时前
Mac和安卓手机互传文件(ADB)
android·macos