apk系统签名和发布软件签名的理解
本人理解apk簽名有兩種情況,一個是系統(tǒng)簽名,一個是發(fā)布apk軟件到應(yīng)用市場時的簽名,下面說說兩者的區(qū)別
apk系統(tǒng)簽名:是將apk簽名成為系統(tǒng)應(yīng)用,系統(tǒng)應(yīng)用是不允許被用戶卸載的,具有系統(tǒng)進(jìn)程權(quán)限r(nóng)oot權(quán)限,系統(tǒng)開發(fā)經(jīng)常會將一些apk嵌入?到安卓系統(tǒng)里去編譯成系統(tǒng)應(yīng)用,就像打電話應(yīng)用,這個應(yīng)用就是系統(tǒng)應(yīng)用,是用戶卸載不了的
apk發(fā)布簽名:發(fā)布簽名是為了驗證身份,發(fā)布到應(yīng)用市場首先會判斷包名,應(yīng)用市場里的所有apk都不允許有相同包名的apk,一旦有那么還會驗證簽名,簽名不一致就認(rèn)為是惡意攻擊,拒絕發(fā)布;簽名一致就認(rèn)為是版本升級
簽名方法:
首先得安裝jdk1.7配置好java命令的環(huán)境變量,使用命令格式 java -jar signapk.jar platform.x509.pem platform.pk8 old.apk new.apk對apk進(jìn)行系統(tǒng)簽名.命令中signapk.jar在系統(tǒng)代碼的out\host\linux-x86\framework目錄下,它是編譯產(chǎn)生的,需要對系統(tǒng)源碼進(jìn)行編譯生成,它的源碼在build\tools\signapk\目錄;platform.x509.pem(公鑰文件)在系統(tǒng)代碼build\target\product\security\目錄下,platform.pk8(含有公鑰的文件)也在這個目錄下;old.apk就是需要被簽名的apk文件;new.apk就是簽名之后的apk文件;命令中的文件最好都使用絕對路徑;以上這是通過signapk工具進(jìn)行簽名,其實還可以通過在Eclipse中配置Custom debug keystore,運行時就自動簽名了,不需要每次使用命令去簽名了;目前公司使用的debug.keystore雖然和C盤.Android目錄下的debug.keystore名字一樣但是本質(zhì)有區(qū)別;原因是某些apk運行調(diào)試時必須使用正式簽名,這樣很麻煩,可以將正式簽名的.keystore文件賦值一份修改成一份自定義調(diào)試keystore證書,但是這個keystore文件的密碼和alias(別名)以及alias密碼都是有規(guī)定的,keystore文件密碼必須是android,別名必須是androiddebugkey,alias別名密碼必須是android;一般開發(fā)APP不會使用到android.uid.system這個屬性,因為google不會提供這樣的系統(tǒng)簽名文件給你,各個手機平臺系統(tǒng)也是定制的,系統(tǒng)簽名文件不會是一樣的,除非是自己編譯的系統(tǒng);總結(jié):一句話,使用了android.uid.system這個屬性就必須使用目標(biāo)系統(tǒng)簽名,否則無法運行root權(quán)限,也就不具有系統(tǒng)進(jìn)程權(quán)限了;關(guān)于apk簽名其實有兩種方式:第一種是通過keytool命令手動生成或者從Eclipse自動生成keystore文件,然后使用jarsigner工具對apk進(jìn)行簽名;還有一種方式就是使用signapk工具來進(jìn)行apk簽名;這兩個方式的區(qū)別就是前者使用keystore文件,后者使用x509.pem和pk8文件進(jìn)行簽名;
總結(jié)
以上是生活随笔為你收集整理的apk系统签名和发布软件签名的理解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 软考新思维--2017年上半年信息系统项
- 下一篇: bash删除文件中的空行