參考資料:http://www.cnblogs.com/ok-lanyan/archive/2013/04/02/2995462.html
一、為什么要簽名
在平時(shí)開(kāi)發(fā)中,我們以debug模式編譯程序時(shí),編譯會(huì)自動(dòng)的為我們的apk添加上默認(rèn)簽名。當(dāng)當(dāng)我們發(fā)布一個(gè)應(yīng)用時(shí)(Release版本時(shí)),編譯器不會(huì)為我們添加默認(rèn)的簽名,這時(shí)需要我們自己為APK添加簽名。
簽名的好處:
- 發(fā)送者的身份認(rèn)證
由于開(kāi)發(fā)商可能通過(guò)使用相同的Package Name來(lái)混淆替換已經(jīng)安裝的程序,以此保證簽名不同的包不被替換
- 保證信息傳輸?shù)耐暾?/li>
簽名對(duì)于包中的每個(gè)文件進(jìn)行處理,以此確保包中內(nèi)容不被替換
- 應(yīng)用程序模塊化:
Android 系統(tǒng)可以允許同一個(gè)證書簽名的多個(gè)應(yīng)用程序在一個(gè)進(jìn)程里運(yùn)行,系統(tǒng)實(shí)際把他們作為一個(gè)單個(gè)的應(yīng)用程序,此時(shí)就可以把我們的應(yīng)用程序以模塊的方式進(jìn)行部署,而用戶可以獨(dú)立的升級(jí)其中的一個(gè)模塊
- 系統(tǒng)要求安裝的程序必須簽名:
所有的應(yīng)用程序都必須有數(shù)字證書,Android系統(tǒng)不會(huì)安裝一個(gè)沒(méi)有數(shù)字證書的應(yīng)用程序
二、Java數(shù)字證書
詳細(xì)的資料:http://blog.csdn.net/mingde_he/article/details/5694274
Java中的keytool.exe可以用來(lái)創(chuàng)建數(shù)字證書,所有的數(shù)字證書是以一條一條(采用別名區(qū)別)的形式存入證書庫(kù)的中,證書庫(kù)中的一條證書包含該條證書的私鑰,公鑰和對(duì)應(yīng)的數(shù)字證書的信息。證書庫(kù)中的一條證書可以導(dǎo)出數(shù)字證書文件,數(shù)字證書文件只包括主體信息和對(duì)應(yīng)的公鑰。
三、如何給apk簽名
1.創(chuàng)建keystore
使用Generate Signed APK創(chuàng)建自己的keystore
2.create new或者choose exiting
選擇已經(jīng)有的keystore或者創(chuàng)建新的
3.創(chuàng)建新的keystore
注意 最后的擴(kuò)展名為.jks
四、簽名打包
將已經(jīng)生成的jks加入到項(xiàng)目的目錄結(jié)構(gòu)中
配置簽名
方式1:在gradle中進(jìn)行配置簽名(注意這種方式不保險(xiǎn))
方式二:通過(guò)ProjectStructure 進(jìn)行配置
選中moudel層中的一個(gè)工程 打開(kāi) signing 添加config
![Uploading Paste_Image_769156.png . . .]
打包簽名###
gradle assembleRelease 或者 assembleDebug
將賬戶密碼寫在gradle.properties
摘抄自:https://github.com/futurice/android-best-practices