最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android應(yīng)用程序簽名步驟及相關(guān)知識(shí)介紹

 更新時(shí)間:2013年04月07日 16:34:11   作者:  
本文主要介紹Android應(yīng)用程序簽名相關(guān)的理論知識(shí),包括:什么是簽名、為什么要給應(yīng)用程序簽名、如何給應(yīng)用程序簽名等,感興趣的朋友可以參考下哈

本文主要講解Android應(yīng)用程序簽名相關(guān)的理論知識(shí),包括:什么是簽名、為什么要給應(yīng)用程序簽名、如何給應(yīng)用程序簽名等。

1、什么是簽名?
      如果這個(gè)問(wèn)題不是放在Android開(kāi)發(fā)中來(lái)問(wèn),如果是放在一個(gè)普通的版塊,我想大家都知道簽名的含義??赏褪菍⒁恍┥钪谐S玫男g(shù)語(yǔ)放在計(jì)算機(jī)這種專(zhuān)業(yè)領(lǐng)域,大家就開(kāi)始迷惑了。計(jì)算機(jī)所做的事情,或者說(shuō)編程語(yǔ)言所做的事情,不正是在盡可能地模擬現(xiàn)實(shí)嗎?所以,計(jì)算機(jī)中所說(shuō)的簽名和生活中所說(shuō)的簽名在本質(zhì)上是一樣的,它所起到的作用也是一致的!
      讓我們來(lái)看看,在現(xiàn)實(shí)生活中的簽名。比如下面這張圖片:
           
這是女星孫儷的簽名。簽名就意味著在紙上或別處寫(xiě)下自己的名字,或者說(shuō)在某處打上一個(gè)標(biāo)記作為你自己的一種特有的標(biāo)識(shí),當(dāng)別人看到這個(gè)簽名的時(shí)候,他會(huì)知道這是和你有關(guān)的,而不是其它人。

2、為什么要給Android應(yīng)用程序簽名?
      如果只能用一句簡(jiǎn)單的話語(yǔ)來(lái)回答這個(gè)問(wèn)題的話,我會(huì)說(shuō):“這是Android系統(tǒng)所要求的”。
      Android系統(tǒng)要求每一個(gè)Android應(yīng)用程序必須要經(jīng)過(guò)數(shù)字簽名才能夠安裝到系統(tǒng)中,也就是說(shuō)如果一個(gè)Android應(yīng)用程序沒(méi)有經(jīng)過(guò)數(shù)字簽名,是沒(méi)有辦法安裝到系統(tǒng)中的!Android通過(guò)數(shù)字簽名來(lái)標(biāo)識(shí)應(yīng)用程序的作者和在應(yīng)用程序之間建立信任關(guān)系,不是用來(lái)決定最終用戶可以安裝哪些應(yīng)用程序。這個(gè)數(shù)字簽名由應(yīng)用程序的作者完成,并不需要權(quán)威的數(shù)字證書(shū)簽名機(jī)構(gòu)認(rèn)證,它只是用來(lái)讓?xiě)?yīng)用程序包自我認(rèn)證的。

3、為什么我開(kāi)發(fā)的Android應(yīng)用程序沒(méi)有做什么簽名也能在模擬器和手機(jī)上運(yùn)行?
      你沒(méi)有給Android應(yīng)用程序簽名并不代表Android應(yīng)用程序沒(méi)有被簽名。為了方便我們開(kāi)發(fā)調(diào)試程序,ADT會(huì)自動(dòng)的使用debug密鑰為應(yīng)用程序簽名。debug密鑰?它在哪?debug密鑰是一個(gè)名為debug.keystore的文件,它的位置:
            系統(tǒng)盤(pán)符:/Documents and Settings/liufeng/.android/debug.keystore
“l(fā)iufeng”對(duì)應(yīng)于你自己的windows操作系統(tǒng)用戶名,怎么樣,是不是已經(jīng)找到它了。這也就意味著,如果我們想擁有自己的簽名,而不是讓ADT幫我們簽名的話,我們也要有一個(gè)屬于自己的密鑰文件(*.keystore)。

4、Android應(yīng)用程序簽名步驟
1)準(zhǔn)備工作
      apk的簽名工作可以通過(guò)兩種方式來(lái)完成:
            1)通過(guò)ADT提供的圖形化界面完成apk簽名;
            2)完全通過(guò)DOS命令來(lái)完成apk簽名
我比較喜歡第2)種方式,所以下面將講解如何通過(guò)命令的方式完成apk簽名。
      給apk簽名一共要用到3個(gè)工具,或者說(shuō)3個(gè)命令,分別是:keytool、jarsigner和zipalign,下面是對(duì)這3個(gè)工具的簡(jiǎn)單介紹:
            1)keytool:生成數(shù)字證書(shū),即密鑰,也就是上面說(shuō)到的擴(kuò)展名為.keystore的那類(lèi)文件;
            2)jarsigner:使用數(shù)字證書(shū)給apk文件簽名;
            3)zipalign:對(duì)簽名后的apk進(jìn)行優(yōu)化,提高與Android系統(tǒng)交互的效率(Android SDK1.6版本開(kāi)始包含此工具)
      從這3個(gè)工具的作用也可以看出,這3個(gè)工具的使用順序。通常我們自己所開(kāi)發(fā)的所有應(yīng)用程序,都是使用同樣的簽名,即使用同一個(gè)數(shù)字證書(shū),這就意味著:如果你是第一次做Android應(yīng)用程序簽名,上面的3個(gè)工具都將用到;但如果你已經(jīng)有數(shù)字證書(shū)了,以后再給其它apk簽名時(shí),只需要用到j(luò)arsigner和zipalign就可以完成。
      為了方便使用上面3個(gè)命令,首先需要將上面3個(gè)工具所在路徑添加到環(huán)境變量path中(我說(shuō)的是為了方便使用,沒(méi)有說(shuō)必須要這么做)。怎么配置環(huán)境變量就不在此講解了,這里需要說(shuō)一下這3個(gè)工具默認(rèn)所在的路徑:
            1)keytool:該工具位于jdk安裝路徑的bin目錄下;
            2)jarsigner:該工具位于jdk安裝路徑的bin目錄下;
            3)zipalign:該工具位于android-sdk-windows/tools/目錄下
      不知道大家是否注意到keytool和jarsigner兩個(gè)工具是jdk自帶的,也就意味著生成數(shù)字證書(shū)和文件簽名不是Android的專(zhuān)利;另外從字面上理解jarsigner也能猜得出該工具主要是用來(lái)給jar文件簽名的。
2)生成未經(jīng)簽名的apk文件
      既然我們要自己對(duì)apk進(jìn)行簽名,就不再需要ADT默認(rèn)幫我們簽名了。如何得到一個(gè)未經(jīng)簽名的apk文件呢?打開(kāi)Eclipse,在Android工程名稱(chēng)上點(diǎn)擊右鍵,依次選擇“Android Tools” - “Export Unsigned Application Package ...”,然后選擇一個(gè)存儲(chǔ)位置保存即可。這樣就得到了一個(gè)未經(jīng)簽名的apk文件。
3)使用keytool工具生成數(shù)字證書(shū)
      keytool -genkey -v -keystore liufeng.keystore -alias liufeng.keystore -keyalg RSA -validity 20000
說(shuō)明:
      1)keytool是工具名稱(chēng),-genkey意味著執(zhí)行的是生成數(shù)字證書(shū)操作,-v表示將生成證書(shū)的詳細(xì)信息打印出來(lái),顯示在dos窗口中;
      2)-keystore liufeng.keystore 表示生成的數(shù)字證書(shū)的文件名為“l(fā)iufeng.keystore”;
      3)-alias liufeng.keystore 表示證書(shū)的別名為“l(fā)iufeng.keystore”,當(dāng)然可以不和上面的文件名一樣;
      4)-keyalg RSA 表示生成密鑰文件所采用的算法為RSA;
      5)-validity 20000 表示該數(shù)字證書(shū)的有效期為20000天,意味著20000天之后該證書(shū)將失效
在執(zhí)行上面的命令生成數(shù)字證書(shū)文件時(shí),會(huì)提示你輸入一些信息,包括證書(shū)的密碼,示例如下:
     
4)使用jarsigner工具為Android應(yīng)用程序簽名
      jarsigner -verbose -keystore liufeng.keystore -signedjar notepad_signed.apk notepad.apk liufeng.keystore
說(shuō)明:
      1)jarsigner是工具名稱(chēng),-verbose表示將簽名過(guò)程中的詳細(xì)信息打印出來(lái),顯示在dos窗口中;
      2)-keystore liufeng.keystore 表示簽名所使用的數(shù)字證書(shū)所在位置,這里沒(méi)有寫(xiě)路徑,表示在當(dāng)前目錄下;
      3)-signedjar notepad_signed.apk notepad.apk 表示給notepad.apk文件簽名,簽名后的文件名稱(chēng)為notepad_signed.apk;
      4)最后面的liufeng.keystore 表示證書(shū)的別名,對(duì)應(yīng)于生成數(shù)字證書(shū)時(shí)-alias參數(shù)后面的名稱(chēng)
5)使用zipalign工具優(yōu)化已簽名的apk(非必須但建議這么做)
      zipalign -v 4 notepad_signed.apk notepad_signed_aligned.apk
說(shuō)明:
      1)zipalign是工具名稱(chēng),-v表示在DOS窗口打印出詳細(xì)的優(yōu)化信息;
      2)notepad_signed.apk notepad_signed_aligned.apk 表示對(duì)已簽名文件notepad_signed.apk進(jìn)行優(yōu)化,優(yōu)化后的文件名為notepad_signed_aligned.apk

說(shuō)明:如果你以前的程序是采用默認(rèn)簽名的方式(即debug簽名),一旦換了新的簽名應(yīng)用將不能覆蓋安裝,必須將原先的程序卸載掉,才能安裝上。因?yàn)槌绦蚋采w安裝主要檢查兩點(diǎn):
      1)兩個(gè)程序的入口Activity是否相同。兩個(gè)程序如果包名不一樣,即使其它所有代碼完全一樣,也不會(huì)被視為同一個(gè)程序的不同版本;
      2)兩個(gè)程序所采用的簽名是否相同。如果兩個(gè)程序所采用的簽名不同,即使包名相同,也不會(huì)被視為同一個(gè)程序的不同版本,不能覆蓋安裝。
      另外,可能有人可能會(huì)認(rèn)為反正debug簽名的應(yīng)用程序也能安裝使用,那也沒(méi)有必要自己簽名了嘛。千萬(wàn)不要這樣想,debug簽名的應(yīng)用程序有這樣兩個(gè)限制,或者說(shuō)風(fēng)險(xiǎn):
      1)debug簽名的應(yīng)用程序不能在Android Market上架銷(xiāo)售,它會(huì)強(qiáng)制你使用自己的簽名;
      2)debug.keystore在不同的機(jī)器上所生成的可能都不一樣,就意味著如果你換了機(jī)器進(jìn)行apk版本升級(jí),那么將會(huì)出現(xiàn)上面那種程序不能覆蓋安裝的問(wèn)題。不要小視這個(gè)問(wèn)題,如果你開(kāi)發(fā)的程序只有你自己使用,當(dāng)然無(wú)所謂,卸載再安裝就可以了。但要是你的軟件有很多使用客戶,這就是大問(wèn)題了,就相當(dāng)于軟件不具備升級(jí)功能!

相關(guān)文章

最新評(píng)論

云龙县| 苍梧县| 鹰潭市| 舞阳县| 前郭尔| 黄浦区| 安义县| 郓城县| 保康县| 吉安市| 内江市| 桐柏县| 乌海市| 莱芜市| 惠来县| 夏邑县| 锡林郭勒盟| 阿拉尔市| 泾川县| 三河市| 卓尼县| 高台县| 临沧市| 本溪| 碌曲县| 大竹县| 清河县| 高碑店市| 汉中市| 航空| 建水县| 内乡县| 灵寿县| 罗源县| 堆龙德庆县| 曲麻莱县| 凯里市| 大石桥市| 双流县| 南投县| 津南区|