- 簽名詳解(一)中主講了Dos命令進(jìn)行簽名雄妥,本文主講通過ADT提供的圖形化界面完成apk簽名的方式最蕾;
- 首先在Android stidio中導(dǎo)入工程,點(diǎn)擊菜單中“Build”選項(xiàng)老厌,彈出的下拉菜單中的“generate signed APK”
- 然后可以選擇創(chuàng)建新的或者選擇一個(gè)已有的key
- 這里我們創(chuàng)建一個(gè)新的key瘟则,點(diǎn)擊"Create new key store"
- 然后點(diǎn)擊OK,此時(shí)就已經(jīng)創(chuàng)建了一個(gè)簽名文件枝秤,接下來就開始對(duì)項(xiàng)目apk進(jìn)行簽名
-
點(diǎn)擊next醋拧,
page_4 -
給android stidio設(shè)置的密碼,如果忘記,點(diǎn)擊Reset進(jìn)行重置密碼
page_5 選擇release 發(fā)布模式丹壕,最后Finish庆械,就完成了apk的簽名
小結(jié)
更換新簽名的應(yīng)用將不能覆蓋安裝,必須將原先的程序卸載掉菌赖,才能安裝上缭乘,因?yàn)槌绦蚋采w安裝主要檢查兩點(diǎn):
1)兩個(gè)程序的入口Activity是否相同。兩個(gè)程序如果包名不一樣琉用,即使其它所有代碼完全一樣堕绩,也不會(huì)被視為同一個(gè)程序的不同版本;
2)兩個(gè)程序所采用的簽名是否相同邑时。如果兩個(gè)程序所采用的簽名不同奴紧,即使包名相同,也不會(huì)被視為同一個(gè)程序的不同版本晶丘,不能覆蓋安裝黍氮。同一個(gè)開發(fā)者的多個(gè)程序盡可能使用同一個(gè)數(shù)字證書。
有利于程序升級(jí)浅浮,當(dāng)新版程序和舊版程序的數(shù)字證書相同時(shí)沫浆,Android系統(tǒng)才會(huì)認(rèn)為這兩個(gè)程序是同一個(gè)程序的不同版本。如果新版程序和舊版程序的數(shù)字證書不相同脑题,則Android系統(tǒng)認(rèn)為他們是不同的程序件缸,并產(chǎn)生沖突,會(huì)要求新程序更改包名叔遂。
有利于程序的模塊化設(shè)計(jì)和開發(fā)他炊。Android系統(tǒng)允許擁有同一個(gè)數(shù)字簽名的程序運(yùn)行在一個(gè)進(jìn)程中,Android程序會(huì)將他們視為同一個(gè)程序已艰。所以開發(fā)者可以將自己的程序分模塊開發(fā)痊末,而用戶只需要在需要的時(shí)候下載適當(dāng)?shù)哪K。
可以通過權(quán)限(permission)的方式在多個(gè)程序間共享數(shù)據(jù)和代碼哩掺。Android提供了基于數(shù)字證書的權(quán)限賦予機(jī)制凿叠,應(yīng)用程序可以共享某些功能或者數(shù)據(jù)給那些與自己擁有相同數(shù)字證書的程序。如果某個(gè)權(quán)限(permission)的protectionLevel是signature嚼吞, 則這個(gè)權(quán)限就只能授予那些跟該權(quán)限所在的包擁有同一個(gè)數(shù)字證書的程序盒件。
debug簽名的應(yīng)用程序有兩個(gè)風(fēng)險(xiǎn):
1)debug簽名的應(yīng)用程序不能在Android Market上架銷售,它會(huì)強(qiáng)制你使用自己的簽名舱禽;
2)debug.keystore在不同的機(jī)器上所生成的可能都不一樣炒刁,就意味著如果你換了機(jī)器進(jìn)行apk版本升級(jí),那么將會(huì)出現(xiàn)上面那種程序不能覆蓋安裝的問題誊稚。不要小視這個(gè)問題翔始,如果你開發(fā)的軟件有很多用戶罗心,總不能讓所有人都卸載重裝吧,那這就相當(dāng)于軟件不具備升級(jí)功能城瞎!在使用第三方授權(quán)(微博渤闷,微信)時(shí)需要配置注冊(cè)應(yīng)用的簽名,此簽名取決于手機(jī)或模擬器中安裝的應(yīng)用的簽名脖镀,測(cè)試時(shí)安裝的應(yīng)用是默認(rèn)簽名方式(debug簽名)飒箭,發(fā)布時(shí)需要更改為自己生成的簽名方式并且在開發(fā)者平臺(tái)上的應(yīng)用信息中也要更改;
- 在簽名時(shí)蜒灰,需要考慮數(shù)字證書的有效期 :
- 數(shù)字證書的有效期要包含程序的預(yù)計(jì)生命周期补憾,一旦數(shù)字證書失效,持有改數(shù)字證書的程序?qū)⒉荒苷I?jí)卷员。
- 如果多個(gè)程序使用同一個(gè)數(shù)字證書,則該數(shù)字證書的有效期要包含所有程序的預(yù)計(jì)生命周期腾务。
- Android Market強(qiáng)制要求所有應(yīng)用程序數(shù)字證書的有效期要持續(xù)到2033年10月22日以后毕骡。
- Android只是在應(yīng)用程序安裝的時(shí)候才會(huì)檢查證書的有效期。如果程序已經(jīng)安裝在系統(tǒng)中岩瘦,即使證書過期也不會(huì)影響程序的正常功能未巫。