参考资料:html
https://blog.csdn.net/nimasike/article/details/51457229android
http://www.javashuo.com/article/p-nrnjoglt-ks.htmlapp
咱们使用Android Studio 运行或测试咱们的app 它使用一个默认的debug.keystore进行签名。测试
这个默认签名(keystore)是不须要密码的,它的默认位置在 $HOME/.android/debug.keystore,若是不存在Android studio会自动建立它。gradle
例如个人debug.keystore就在 C:\Users\devil\.android\debug.keystore 。再咱们正式发布项目的时候是不能使用debug.keystore的。ui
1. 查看当前 debug 模式下的 数字签名spa
keytool -list -v -keystore C:\Users\devil\.android\debug.keystore.net
keytool -list -v -keystore C:\Users\devil\.android\debug.keystoredebug
首先在 jre目录的子目录bin下面找到 可执行文件 keytool , 在cmd模式下执行, 其中 C:\Users\devil\.android\debug.keystore 是本机默认的 keystore 文件。3d
因为 Android 应用在debug模式和release 模式 下面的数字签名每每不一样,所以咱们须要 对 release模式下的数字签名进行从新创建,而且能够保持 debug模式下的数字签名的设置, 固然咱们也能够将 debug模式下数字签名与 release 模式下的数字签名改成相同的,通常状况下这并非必须的。
下面记录下 release模式下的数字签名的创建以及 app应用的打包过程:
release 模式下的数字签名的创建:
下面基本就是选择默认选项,而后到工程目录下面就能够找到 已经编译好的带有数字签名的APK文件。
2. 查看 release 模式下的 数字签名
keytool -list -v -keystore C:\Users\devil\.android\devil_release.jks
3. 以上步骤是手动为release模式下的app生成设置数字签名,下面介绍如何将数字签名的设置方式保存为本机的默认设置,从而保证每次作带有数字签名的app生成的同时还能不用从新配置:
为默认的debug模式的数字签名进行配置,若是不进行配置则默认使用debug.keystore文件。这里咱们也一样修改成本身生成的数字签名,而后使debug模式和release模式下面的数字签名都采用相同配置。
为release模式下的数字签名进行配置。
查看APP的配置文件应该是这样的:
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文件备份一个以便于每次创建新工程的时候均可以将它保存到新建的工程下面,这样至少数字签名的生成步骤是能够省掉的。