Android應(yīng)用在Debug模式下ADT會(huì)自動(dòng)用默認(rèn)的密鑰和證書來(lái)進(jìn)行簽名您单,但是在發(fā)布的時(shí)候就需要一個(gè)手動(dòng)配置楷扬。
生成簽名的方法見我的上一篇文章:生成Java簽名.keystore文件的方法
為Android應(yīng)用配置簽名
代碼添加
在Android應(yīng)用的build.gradle文件的android中添加如下代碼
signingConfigs {
debug {
keyAlias 'androiddebugkey'
keyPassword 'android'
storeFile file('../KEYSTORE/debug.keystore')
storePassword '123456'
}
}
其中keyAlias對(duì)應(yīng)簽名中的別名该互,keyPassword對(duì)應(yīng)別名密碼,storeFile是簽名的文件路徑伊脓,storePassword是簽名的密碼红且。
可視化添加
通過(guò)快捷鍵Command+;
邑茄,或者是File->Project Structure
打開Project Structure對(duì)話框,然后選擇Signing
標(biāo)簽肩杈,然后在其中我們可以添加簽名腔剂。
![](https://chacojack.github.io/2016/07/06/Android%E5%BA%94%E7%94%A8%E9%85%8D%E7%BD%AE%E7%AD%BE%E5%90%8D/7513CAB4-B492-434A-B496-76670B695210.png)
通過(guò)途中紅框標(biāo)出的加號(hào)添加一個(gè)簽名,在右側(cè)填寫信息即可靡砌,之后點(diǎn)擊OK已脓。這種方法,Android Studio會(huì)自動(dòng)為我們添加上面的代碼通殃。
使用簽名
簽名是要在打包的時(shí)候使用度液。打包一般用debug包和release包,因?yàn)槲覀兊暮灻菫閐ebug準(zhǔn)備的画舌,那么下來(lái)我演示打debug包時(shí)怎么使用堕担。
還是在build.gradle的android中添加如下代碼
buildTypes {
debug {
signingConfig signingConfigs.debug
}
}
這樣我們?cè)诖騞ebug包的時(shí)候就會(huì)帶上這個(gè)簽名了。
為什么Android應(yīng)用需要簽名
這里我在網(wǎng)上找了一些資料總結(jié)了一下曲聂,這個(gè)理解一下就可以了霹购。
- 應(yīng)用程序升級(jí)——當(dāng)你對(duì)應(yīng)用程序進(jìn)行升級(jí)時(shí),如果你想用戶平穩(wěn)的升級(jí)朋腋,那么齐疙,你就需要簽上相同的證書。當(dāng)系統(tǒng)安裝一個(gè)升級(jí)應(yīng)用程序時(shí)旭咽,如果新版本的證書與老版本的證書有匹配的話贞奋,那么,系統(tǒng)才會(huì)允許進(jìn)行升級(jí)轻专。如果你沒(méi)有為版本簽上合適的證書忆矛,當(dāng)你安裝時(shí),你需要給應(yīng)用程序指定一個(gè)新的包名——在這種情況下,用戶安裝的新版本催训,被當(dāng)作是一個(gè)全新的應(yīng)用程序洽议。
- 應(yīng)用程序模塊化——如果應(yīng)用程序請(qǐng)求的話,Android系統(tǒng)允許簽有相同證書的應(yīng)用程序運(yùn)行在相同的進(jìn)程里漫拭,這樣亚兄,系統(tǒng)就會(huì)把它們看作是一個(gè)單一的應(yīng)用程序。用這種方法配置應(yīng)用程序采驻,用戶可以選擇更新每個(gè)獨(dú)立的模塊审胚。
- 代碼/數(shù)據(jù)權(quán)限共享——Android系統(tǒng)提供了基于簽名的權(quán)限檢查,因此礼旅,如果應(yīng)用程序間簽有特定的證書膳叨,那么,它們之間可以共享功能痘系。通過(guò)多個(gè)程序簽有相同的證書并且使用基于簽名的權(quán)限檢查菲嘴,你的程序可以以一種安全的方式共享代碼和數(shù)據(jù)。還有一個(gè)決定簽名策略的重要因素是:如何設(shè)定key的有效期汰翠。
- 發(fā)送者的身份認(rèn)證龄坪,由于開發(fā)商可能通過(guò)使用相同的Package Name來(lái)混淆替換已經(jīng)安裝的程序,以此保證簽名不同的包不被替換
- 保證信息傳輸?shù)耐暾愿椿剑灻麑?duì)于包中的每個(gè)文件進(jìn)行處理健田,以此確保包中內(nèi)容不被替換。
- 防止交易中的抵賴發(fā)生佛纫, 市場(chǎng)對(duì)軟件的要求
Android中使用簽名的相關(guān)知識(shí)請(qǐng)參考以下文章: