uniapp 获取签名证书 SHA1 自有证书签名打包

1.登录你的Dcloud 账户

2.找到我的应用菜单

3.点开某个应用

4.查看证书详情,里面有SHA1 和别名,密码,下载证书用于云打包,可以选择自有证书,输入别名,密码打包

5.登录高德地图开放平台申请地图key

### UniApp获取安卓应用签名的方法 在 UniApp 开发环境中,可以通过调用原生 Android API 来获取应用签名信息。由于 UniApp 是基于跨平台框架开发的,因此需要借助 `uni-app` 提供的插件机制或者通过编写原生模块来完成这一功能。 以下是具体方法和代码示例: #### 方法概述 1. 使用 Java 反射技术,在 Android 原生层获取当前应用签名信息。 2. 将该逻辑封装到一个自定义插件中,并通过 JavaScript 调用此插件接口。 3. 利用工具类命令(如 KeyTool),可以进一步解析签名文件的内容[^2]。 #### 实现步骤说明 为了实现上述目标,需按照以下方式操作: ##### 1. 创建 Android 插件工程 创建一个新的 Android 工程作为插件项目,用于处理签名提取的相关业务逻辑。 ##### 2. 编写核心代码 下面是一个完整的 Java 类实例,展示如何从 APK 文件中读取其对应的 SHA-1 或 MD5 签名: ```java package com.example.signatureplugin; import android.content.Context; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.jar.Manifest; import javax.security.cert.CertificateException; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.pm.Signature; import android.util.Base64; public class SignatureUtil { public static String getSignature(Context context, String packageName) { try { PackageManager pm = context.getPackageManager(); PackageInfo packageInfo = pm.getPackageInfo(packageName, PackageManager.GET_SIGNATURES); Signature[] signatures = packageInfo.signatures; byte[] cert = signatures[0].toByteArray(); MessageDigest md = MessageDigest.getInstance("SHA1"); byte[] publicKey = md.digest(cert); StringBuilder hexString = new StringBuilder(); for (byte aPublicKey : publicKey) { String appendString = Integer.toHexString(0xFF & aPublicKey).toUpperCase(Locale.US); if (appendString.length() == 1){ hexString.append("0").append(appendString); }else{ hexString.append(appendString); } } return hexString.toString(); // 返回 SHA-1 的十六进制字符串表示形式 } catch (PackageManager.NameNotFoundException | NoSuchAlgorithmException e) { e.printStackTrace(); } return null; } } ``` ##### 3. 注册并打包插件 将上面编写的类集成至您的 uni-app 应用程序当中去。这一步骤涉及到了一些复杂的配置过程,请参照官方文档指南完成插件注册与发布流程。 ##### 4. 在前端页面上调用插件函数 最后,在 Vue 组件或其他地方引入刚才制作好的 native plugin ,并通过它访问所需数据: ```javascript export default { methods:{ async fetchSign(){ const res=await plus.android.importClass('com.example.signatureplugin.SignatureUtil').getSignature(this.$scope._context,'your.package.name'); console.log(res); // 输出结果类似于:AA:BB:CC... } } }; ``` 以上即为整个解决方案的大致轮廓[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值