參考資料:
https://blog.csdn.net/nimasike/article/details/51457229
https://www.cnblogs.com/zhangqie/p/6439052.html
我們使用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
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 模式下的數字簽名的建立:
下面基本就是選擇默認選項,然后到工程目錄下面就可以找到 已經編譯好的帶有數字簽名的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文件備份一個以便於每次建立新工程的時候都可以將它保存到新建的工程下面,這樣至少數字簽名的生成步驟是可以省掉的。