参考资料:


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

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

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

1. 查看当前 debug 模式下的  数字签名

keytool -list -v -keystore   C:\Users\devil\.android\debug.keystore

Android Studio 默认 debug.keystore ,    apk打包,keystore.jks文件生成,根据keystore密钥获取SHA1安全码_javascript

keytool -list -v -keystore   C:\Users\devil\.android\debug.keystore

首先在 jre目录的子目录bin下面找到   可执行文件 keytool , 在cmd模式下执行,   其中 C:\Users\devil\.android\debug.keystore  是本机默认的   keystore  文件。

由于  Android  应用在debug模式和release 模式 下面的数字签名往往不同,因此我们需要 对 release模式下的数字签名进行重新建立,并且可以保持  debug模式下的数字签名的设置,   当然我们也可以将 debug模式下数字签名与 release 模式下的数字签名改为相同的,一般情况下这并不是必须的。

下面记录下  release模式下的数字签名的建立以及 app应用的打包过程:

release 模式下的数字签名的建立:

Android Studio 默认 debug.keystore ,    apk打包,keystore.jks文件生成,根据keystore密钥获取SHA1安全码_android_02


Android Studio 默认 debug.keystore ,    apk打包,keystore.jks文件生成,根据keystore密钥获取SHA1安全码_javascript_03


Android Studio 默认 debug.keystore ,    apk打包,keystore.jks文件生成,根据keystore密钥获取SHA1安全码_安卓(Android)_04


Android Studio 默认 debug.keystore ,    apk打包,keystore.jks文件生成,根据keystore密钥获取SHA1安全码_数字签名_05



Android Studio 默认 debug.keystore ,    apk打包,keystore.jks文件生成,根据keystore密钥获取SHA1安全码_安卓(Android)_06


下面基本就是选择默认选项,然后到工程目录下面就可以找到 已经编译好的带有数字签名的APK文件。

Android Studio 默认 debug.keystore ,    apk打包,keystore.jks文件生成,根据keystore密钥获取SHA1安全码_android_07


2.  查看 release 模式下的 数字签名

keytool -list -v -keystore   C:\Users\devil\.android\devil_release.jks

Android Studio 默认 debug.keystore ,    apk打包,keystore.jks文件生成,根据keystore密钥获取SHA1安全码_安卓(Android)_08


3.   以上步骤是手动为release模式下的app生成设置数字签名,下面介绍如何将数字签名的设置方式保存为本机的默认设置,从而保证每次做带有数字签名的app生成的同时还能不用重新配置:

Android Studio 默认 debug.keystore ,    apk打包,keystore.jks文件生成,根据keystore密钥获取SHA1安全码_安卓(Android)_09

为默认的debug模式的数字签名进行配置,如果不进行配置则默认使用debug.keystore文件。这里我们也同样修改为自己生成的数字签名,然后使debug模式和release模式下面的数字签名都采用相同配置。

Android Studio 默认 debug.keystore ,    apk打包,keystore.jks文件生成,根据keystore密钥获取SHA1安全码_安卓(Android)_10


为release模式下的数字签名进行配置。

Android Studio 默认 debug.keystore ,    apk打包,keystore.jks文件生成,根据keystore密钥获取SHA1安全码_数字签名_11


查看APP的配置文件应该是这样的:

Android Studio 默认 debug.keystore ,    apk打包,keystore.jks文件生成,根据keystore密钥获取SHA1安全码_数字签名_12

app下的build.gradle 文件内容。

apply plugin: 'com.android.application'

android {
signingConfigs {
android_app {
keyAlias 'androidapp'
storeFile file('C:/Users/devil/.android/devil_release.jks')
keyPassword '123456'
}
}
compileSdkVersion 24
buildToolsVersion "24.0.2"
defaultConfig {
applicationId "activitytest.com.example.myapplication"
minSdkVersion 15
targetSdkVersion 24
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.android_app
}
debug {
signingConfig signingConfigs.android_app
}
}
}

dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:24.2.1'
testCompile 'junit:junit:4.12'
}

==========================================================================

带有数字签名配置的APP源码在传播的时候是存在一定的问题的,因为你把工程文件传给其他人的时候数字签名文件往往不会进行传输的,这时候如果其他人在拿到源码文件后重新进行配置数字签名文件的话是不会得到原始配置的数字签名的,如果这个APP工程调用地图API的情况下由于数字签名的不同有可能引起他人重新编译好的app难以正常运行,因此如果你的工程需要用到数字签名的话你应该将你的数字签名一并打包发给他人,以便他人能够在另一个开放环境下重新配置数字签名。


需要注意的是即使将数字签名(包括debug模式和release模式)下配置进行默认配置,这种情况下每次生成APP文件时不需要重新配置,但是以上步骤的操作只对当前工程有用,也就是说但你重新建立工程后还需要重新进行本文中的所有操作,所以可以将生成的数字签名文件 .jks文件保存在当前工程目录下,这样方便打包工程,同时可以将  .jks文件备份一个以便于每次建立新工程的时候都可以将它保存到新建的工程下面,这样至少数字签名的生成步骤是可以省掉的。