前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >八、从华为HMS Core集成过程看密码学知识

八、从华为HMS Core集成过程看密码学知识

作者头像
砖业洋__
发布2023-05-06 20:23:31
6310
发布2023-05-06 20:23:31
举报
文章被收录于专栏:博客迁移同步

hms通过SDK提供的一些能力,即便是离线能力,安装apk之后第一次使用需要联网。因为需要后台校验一些配置信息,还包括指纹、包名、App ID等。如果校验不通过是无法调用这些API的。   这里不说上线应用市场,就看本地打release包,这里可能需要一些android开发基础才看得懂。

集成步骤

1.在AppGallery Connect(华为开发者服务的后台)创建项目及应用

  会让你输入包名,每个包名对应一个应用,在这个应用下会有相应的配置,不同的应用会有不同的配置,所以这里才让你输入包名。而且运行apk的时候,hmssdk会根据你的包名去匹配后台该包名底下的配置,然后进行验证。

2.生成签名证书

  比如.jks.keystore密钥库,密钥库里可以包含多个私钥证书,自己利用android studio就可以生成,每个密钥用别名alias区分

  注意:这个私钥证书和https的公钥证书不一样,这个证书里面存放的是私钥,而https的证书里是公钥。

  这是自签名,不用第三方参与颁发证书。

  如下图,android studio可以在密钥库的多个私钥里选择一个私钥进行签名,比如这里可选择别名为hmsdemotest2的私钥去签名

key store password相当于你家大门钥匙,key password相当于你家里房间的钥匙,不同的房间需要不同的钥匙。当然使用不同密钥也可以选择用相同的密码充当钥匙,就相当于进了你家大门,其余的房间门都是同一把钥匙,这样方便记忆。

3.选择签名的私钥查看证书并导出指纹。

  开发者通过JDKKeytool工具以及签名文件,选择自己的密钥库的某一个私钥对应的SHA256复制(私钥不会在这里显示,你的证书里的个人信息和私钥通过MD5SHA1SHA256后的哈希数值会显示在这里,这就是证书的指纹)

  查看SHA256的操作如下:

  进入已安装JDKbin目录下。在bin目录下运行,输入keytool查看签名文件指令,并运行

代码语言:javascript
复制
keytool -list -v -keystore D:\Android\WorkSpcae\HmsDemo\app\HmsDemo.jks

(window需要这么操作,mac直接运行指令即可)

4.在AppGallery Connect(华为开发者服务的后台)添加指纹

  然后把SHA256填写到华为开发者服务的后台配置页面,方便hms发送数据给后台校验SHA256时用。

  如果校验不通过日志也会打印失败,我在测试华为推送服务的时候填写错了SHA256导致打印错误日志如下:

代码语言:javascript
复制
E/HMSSDK_HmsInstanceIdEx: TokenTask failed, ErrorCode: 6003
E/HMSSDK_AutoInit: Push init failed
    com.huawei.hms.common.ApiException: 6003: certificate fingerprint error

5.AppGallery Connect上开通API服务

  提示:如果在“API管理”----“Push Kit”没开启,则会报以下错误

代码语言:javascript
复制
E/HMSSDK_HmsInstanceIdEx: TokenTask failed, ErrorCode: 800100000
E/HMSSDK_AutoInit: Push init failed
    com.huawei.hms.common.ApiException: 907122036: no right

6.添加项目配置

  最后下载这个agconnect-services.json到工程根目录,这个json的数据也是需要后台校验的,hms会在apk运行后调用API时,会将这个里面的数据发送到后台校验,验证不通过则这个API就调用失败。

agconnect-services.json内容如下

  顺带一提,package_name就像名字,可能重名,后台是不会根据你的package_name去区分你的应用的,而app_id就像身份证号,这个不会重复,可以用来区分不同的应用

7.配置项目签名

将已经生成的签名文件HmsDemo.jks拷贝到app文件夹下,并打开应用级build.gradle文件(通常是 app/build.gradle

在build.gradle文件的android闭包中添加签名配置信息。

代码语言:javascript
复制
signingConfigs {
    release {
        storeFile file('HmsDemo.jks')
        keyAlias 'hmsdemo'     // ====使用密钥库中的哪一个密钥
        keyPassword '123456'    // ====访问这个密钥库需要的密码,大门钥匙
        storePassword '123456'    // ====访问指定的密钥需要的密码,卧室钥匙
        v1SigningEnabled true
        v2SigningEnabled true
    }
}

buildTypes {
    release {
        signingConfig signingConfigs.release
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
    }
    debug {
        signingConfig signingConfigs.release
        debuggable true
    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-05-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.在AppGallery Connect(华为开发者服务的后台)创建项目及应用
  • 2.生成签名证书
  • 3.选择签名的私钥查看证书并导出指纹。
  • 4.在AppGallery Connect(华为开发者服务的后台)添加指纹
  • 5.AppGallery Connect上开通API服务
  • 6.添加项目配置
  • 7.配置项目签名
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档