參考資料: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文件備份一個以便於每次創建新工程的時候均可以將它保存到新建的工程下面,這樣至少數字簽名的生成步驟是能夠省掉的。