【Android Studio】 默认keystore 以及自定义keystore

转载 2016年08月30日 11:23:17

原文链接:http://www.th7.cn/Program/java/201606/879901.shtml

我们使用Android Studio 运行或测试我们的app 它使用一个默认的debug.keystore进行签名。

这个默认签名(keystore)是不需要密码的,它的默认位置在$HOME/.android/debug.keystore,如果不存在Android studio会自动创建它。

例如我的debug.keystore就在C:/Users/Administrator/.android/debug.keystore。再我们正式发布项目的时候是不能使用debug.keystore的。

官方地址:https://developer.android.com/studio/publish/app-signing.html

下面我们来介绍如何使用Android Studio创建一个新的keystore,并发布我们的apk

第一步: Build —>> Generate Signed APK
第一步: Build —>> Generate Signed APK

第二步:Create New

第三步:填写相关信息,里面内容什么含义自行Google

第四步:输入密码

第五步:选择发布app的路径默认即可 选择release方式发布

OK,发布成功,可以到文件夹下面找到发布的apk

下面我们来配置如何在debug的时候使用我们自定义的keystore。

第一步:还是要新建一个keystore,就用上面的也可以。

第二步:在项目上右键Open Module Settings.然后看图就可以了,选择路径,把密码填上,该填的都填好。

第三步:分别选择debug和release 都设置为刚才填进去的keystore。

点击OK即可,然后查看APP的配置文件应该是这样的。

android {
signingConfigs {
android_studio_app {
keyAlias ‘androidstudioapp’
keyPassword ‘mypassword’
storeFile file(‘D:/Android/keystore/android_studio_app.jks’)
storePassword ‘mypassword’
}
}
compileSdkVersion 23
buildToolsVersion “23.0.1”
defaultConfig {
applicationId “com.example.administrator.myapplication”
minSdkVersion 15
targetSdkVersion 23
versionCode 1
versionName “1.0”
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile(‘proguard-android.txt’), ‘proguard-rules.pro’
signingConfig signingConfigs.android_studio_app
}
debug {
signingConfig signingConfigs.android_studio_app
}
}
}

下面讲解如何测试apk是否使用了我们创建的keystore

第一步:keytool -list -v -keystore xxx.keystore

通过工具查看sha1的值.,例如5C:93:68:2C:E3:2B:00:F1:D6:11:0F:46:08:93:32:1D:FD:6E:60:CC

第二步:在APP内部通过代码的方式获取sha1 两者一比较即可。

import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.Signature;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.security.cert.CertificateEncodingException;
import java.security.cert.CertificateFactory;
import java.security.cert.X509Certificate;

//这个是获取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等加密算法
MessageDigest md = MessageDigest.getInstance(“SHA1”);
//获得公钥
byte[] publicKey = md.digest(c.getEncoded());
//字节到十六进制的格式转换
hexString = byte2HexFormatted(publicKey);
} catch (NoSuchAlgorithmException e1) {
e1.printStackTrace();
} catch (CertificateEncodingException 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();
}

Android studio如何指定使用自己生成的keystore调试

Android studio如何指定使用自己生成的keystore调试
  • github_2011
  • github_2011
  • 2016年12月13日 16:42
  • 1368

Andriod Studio debug.keystore(默认)和如何生成自定义的keystore 以及如何生成数字签名

今天尝试进行一个地图应用,用的是百度地图SDK,在申请的过程中,需要你的数字签名(指的是我们打包程序时所用keystore的SHA1指纹) 在网上搜索了一些东西,整理出下面一篇文章: ######...
  • u012005313
  • u012005313
  • 2015年09月19日 21:07
  • 17851

android studio中更改keyStore以及SHA1等信息的查看方法

在android studio中通过Build——>Generate Signed Apk...生成keyStore文件,此文件后缀为.jks 有了.jks文件后,就可以对默认的keyStore进行...
  • u013133126
  • u013133126
  • 2016年10月28日 14:42
  • 2020

as上签名文件在Android Studio中的.jks文件代替在eclipse时.keystore

生成jks签名文件 选择Build > Generate Signed APK… 选择项目app > Next 选择Create new… 选择签名文件的路径,这些信...
  • f917386389
  • f917386389
  • 2016年02月18日 15:19
  • 5575

Android 生成keystore,两种方式

转自:  http://blog.csdn.net/ms03001620/article/details/8490314 一、eclipse 中生成android keystore ...
  • yueguanyun
  • yueguanyun
  • 2016年04月13日 13:00
  • 1190

Eclipse 修改默认的keystore签名文件

Eclipse 自定义的调试证书,Android 修改 keystore 密码,别名alias和别名密码
  • u014702653
  • u014702653
  • 2016年05月31日 20:55
  • 7079

Android 修改Android签名证书keystore的密码、别名alias以及别名的密码

转载请注明出处:http://blog.csdn.net/yybj/article/details/43488705 最近在做微信的移动开发,每次运行程序都需要进行加上keystore才能...
  • yybj
  • yybj
  • 2015年02月04日 16:58
  • 7021

Android 生成keystore,两种方式 【包括Mac下制作】

一、eclipse 中生成android keystore 建立任意一个android项目(例如:AntForAndroid) 右键AntForAndroid根目录弹出菜单->Androi...
  • aa294194253
  • aa294194253
  • 2015年01月20日 13:16
  • 2768

自定义debug.keystore 步骤及注意事项

前沿:   在开发安卓程序时,像百度地图,三方分享这类的应用,使用eclipse自带的debug.keystore 是没办法直接使用的, 如果每次调试都使用自己的keystore打包后再调试,即费...
  • yangqing_dt
  • yangqing_dt
  • 2015年04月02日 21:56
  • 1514

Android使用KeyStore对数据进行加密

谈到 Android 安全性话题,Android Developers 官方网站给出了许多很好的建议和讲解,涵盖了存储数据、权限、网络、处理凭据、输入验证、处理用户数据、加密等方方面面密钥的保护以及网...
  • u010123643
  • u010123643
  • 2017年01月20日 17:11
  • 3451
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【Android Studio】 默认keystore 以及自定义keystore
举报原因:
原因补充:

(最多只允许输入30个字)