集成地图的时候需要获取sha1 的值,非常繁琐,因为不同的项目SHA1的值是不同的,但是是可以使用相同的SHA1 的值的。
1.先看看怎么获取SHA1 的值:官网的教程要在android studio 的terminal 里面执行一串操作,但是这种指令如果执行不下去、遇到问题很难排查:https://lbs.amap.com/cooperation/technical_advisory/?tab=2
publicstatic 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 (NameNotFoundException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return null;
}
上面这段代码出自高德官网,无需繁琐的操作!
2.n 个项目使用同一个SHA1,其实就是共用一个签名文件,签名文件里面包含了 SHA1 的信息
1):dos命令定位到.jks文件下。
2):输入命令:keytool -v -list -keystore keystore.jks【一定要记得加上 -v 参数,不然只能看到SHA1,没有MD5】【keystore.jks,需要替换为你自己的密钥所在路径和文件名】
3.项目里面配置签名文件:
其他的按照提示无脑填写就好了