Eclipse的获取方式
Studio的获取方式
使用keytool自代的jdk获取方式
1.在android文件夹中
击入:调试版本使用 debug.keystore,命令为:keytool -list -v -keystore debug.keystore。 发布版本使用 apk 对应的 keystore,命令为:keytool -list -v -keystore apk 的 keystore 。
即可看到
在我的实践中可没这么巧,上面的方法不管用,我屡试不爽
1.在老兄的帮助下
在cmd下,进入C:\Users\Administrator\.android目录执行命令如下:
keytool -genkey -v -keystore debug.keystore -alias androiddebugkey -keyalg RSA -validity 10000
输入密码,用户等信息确认后便可生成一个debug.keystore
在jdk中生成keystore
击入:
keytool -genkey -alias android.keystore -keyalg RSA -validity 20000 -keystore android.keystore
提示
无意中用了这个方法,不错挺给力
1.创建keystore文件
keytool -genkey -alias dotuian -keystore dotuian.keystore -keyalg RSA
生成一个名为 dotuian.keystore 的文件
2 检查一个keystore:
keytool -list -v -keystore dotuian.keystore
Enter keystore password:your password(输入密码)
3输出keystore到一个文件:testkey:
keytool -export -alias dotuian -keystore dotuian.keystore -rfc -file dotuian.cer
Enter keystore password:your password(输入密码)
1.Build -> Generate Signed APK ->Next...生成Apk, 然后在 .Android目录中 keytool -list -v -keystore debug.keystore,就会生成debug.keystore, keystore和jks是一样的原理,相当一证书
When using Code Completion, you can accept the currently highlighted selection in the popup list with Tab key.在写自定义的电影选票时出来这个错,很棘手?
写代码也好,做项目也好,思路真的很重要,静下心来好好想想,应做什么,不做做什么,what,why how
获取jks,apk.keystore
1.他们都是有build中生成的,只是后缀不一样,构建出来的文件不一样
2.获取sha1,要用keystore生成
签名生成命令 keytool -list -v -keystore keystore.jks
public class KeyTool {
//这个是获取SHA1的方法
public static String getCertificateSHA1Fingerprint(Context context) {
//获取包管理器
PackageManager pm = context.getPackageManager();
//获取当前要获取SHA1值的包名,也可以用其他的包名,但需要注意,
//在用其他包名的前提是,此方法传递的参数Context应该是对应包的上下文。
String packageName = context.getPackageName();
//返回包括在包中的签名信息
int flags = PackageManager.GET_SIGNATURES;
PackageInfo packageInfo = null;
try {
//获得包的所有内容信息类
packageInfo = pm.getPackageInfo(packageName, flags);
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
//签名信息
Signature[] signatures = packageInfo.signatures;
byte[] cert = signatures[0].toByteArray();
//将签名转换为字节数组流
InputStream input = new ByteArrayInputStream(cert);
//证书工厂类,这个类实现了出厂合格证算法的功能
CertificateFactory cf = null;
try {
cf = CertificateFactory.getInstance("X509");
} catch (Exception e) {
e.printStackTrace();
}
//X509证书,X.509是一种非常通用的证书格式
X509Certificate c = null;
try {
c = (X509Certificate) cf.generateCertificate(input);
} catch (Exception e) {
e.printStackTrace();
}
String hexString = null;
try {
//加密算法的类,这里的参数可以使MD4,MD5,SHA1,SHA256等加密算法
MessageDigest md = MessageDigest.getInstance("SHA1");
//获得公钥
byte[] publicKey = md.digest(c.getEncoded());
//字节到十六进制的格式转换
hexString = byte2HexFormatted(publicKey);
} catch (NoSuchAlgorithmException e1) {
e1.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
return hexString;
}
//这里是将获取到得编码进行16进制转换
private static String byte2HexFormatted(byte[] arr) {
StringBuilder str = new StringBuilder(arr.length * 2);
for (int i = 0; i < arr.length; i++) {
String h = Integer.toHexString(arr[i]);
int l = h.length();
if (l == 1)
h = "0" + h;
if (l > 2)
h = h.substring(l - 2, l);
str.append(h.toUpperCase());
if (i < (arr.length - 1))
str.append(':');
}
return str.toString();
}
}