在使用人脸安卓端SDK的时候,往往有不少同学纠结于包名和MD5的事情,因为客户端SDK需要配合license授权文件使用,所以安卓端的包名和md5即为license生成的主要依据,下面分别仔细讲解一下,希望对大家有些帮助(微笑脸)
什么是包名?
每个 Android 应用均有一个唯一的应用 ID。安卓以 Java 包的形式管理应用。 具体说明见官方文档:https://developer.android.com/studio/build/application-id.html
什么是签名文件?
安卓apk需要开发者进行签名。开发调试过程中,IDE(android studio,Eclipse) 会使用默认的debug 签名文件进行签名。但发布apk时必须使用,自己生成的签名文件进行签名。签名文件确保了开发者对 该应用的所有权,因为不同签名文件签名的apk不能覆盖原有的。该文件扩展名为jks
如何生成新的签名文件?
您可以使用Android Studio生成应用签名或上传密钥,步骤如下:
- 在菜单栏中,点击Build->GenerateSignedAPK
- 从下拉菜单中选择一个模块,然后点击Next
- 点击Create new以创建一个新密钥和密钥库
- 在New Key Store窗口上,为您的密钥库和密钥提供以下信息,如下图所示:
密钥库
- Key store path:选择创建密钥库的位置。
- Password:为您的密钥库创建并确认一个安全的密码。
密钥
- Alias:为您的密钥输入一个标识名;
- Password:为您的密钥创建并确认一个安全的密码。此密码应当与您为密钥库选择的密码不同;
- Validity (years):以年为单位设置密钥的有效时长。密钥的有效期应至少为 25 年,以便您可以在应用的整个生命期内使用相同的密钥签署应用更新;
- Certificate:为证书输入一些关于您自己的信息。此信息不会显示在应用中,但会作为APK的一部分包含在您的证书中;
填写完表单后,请点击 OK。
具体说明见官方文档:https://developer.android.com/studio/publish/app-signing.html
什么是签名 MD5? 如何获取
每个签名文件都有一个数字指纹。相当于是公钥,同一个签名文件的指纹是一样的,不同的签名文件指纹不一样。可以通过检查这个指纹确定是不是使用的同一个签名文件。百度人脸鉴权服务使用的是 MD5方式的指纹。
命令行输入:
keytool –list –v –keystore <签名文件路径>
然后输入密码,会打印出该签名文件相关的信息。其中的一项是证书指纹 MD5,如下图所示:
为什么需要签名 MD5?
安卓的应用是以包名做为唯一ID的。百度的人脸服务也是以包名做为单位进行 授权的。因为包名是开发者填写的,所以别的开发者也可以写个应用来冒充其他人的应用。百度人脸服务会涉及到用户的信息,使用过程中也有费用产生。所以为了保护APP不会他人冒充,我们对应用的签名进行校验。刚才也提到了,因为MD5算法的不可逆性,可以当做公钥使用。用户在申请时在后台填写签名的MD5值,发布/测试时,使用该签名文件。人脸服务在运行时会对当前应用的签名MD5 进行校验,如果信息不一致会拒绝服务。
安卓包名、MD5值的一些讲解,供大家参考