Ionic3 安卓簽名

app簽名,相當(dāng)于是app在Anndroid系統(tǒng)上的一個(gè)認(rèn)證救军,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)決定最終用戶(hù)可以安裝哪些應(yīng)用程序。這個(gè)數(shù)字簽名由應(yīng)用程序的作者完成拷泽,并不需要權(quán)威的數(shù)字證書(shū)簽名機(jī)構(gòu)認(rèn)證疫鹊,它只是用來(lái)讓?xiě)?yīng)用程序包自我認(rèn)證的袖瞻。應(yīng)用市場(chǎng)上APP簽名不允許相同,也不會(huì)相同拆吆,但允許有相同的包名虏辫,相同簽名的APP高版本可以覆蓋低版本。

在開(kāi)發(fā)過(guò)程中锈拨,如果沒(méi)有手動(dòng)給app添加簽名砌庄,ADT會(huì)自動(dòng)的使用debug密鑰為應(yīng)用程序簽,debug密鑰是一個(gè)名為debug.keystore的文件奕枢,它的位置在:C:/${user}/.android/debug.keystore 娄昆。也就是說(shuō),如果想擁有自己的簽名缝彬,而不是讓ADT使用自動(dòng)生成的debug.keystore簽名的話(huà)萌焰,需要有一個(gè)屬于自己的密鑰文件(*.keystore)。

默認(rèn)的 debug.keystore 位置如下:


image.png

以下是在命令行下谷浅,ionic 安卓app簽名步驟

準(zhǔn)備工作

  • keytool:該工具位于jdk安裝路徑的bin目錄下扒俯;
  • jarsigner:該工具位于jdk安裝路徑的bin目錄下;
  • zipalign:該工具位于Android-sdk-windows/tools/目錄下一疯;

keytool和jarsigner兩個(gè)工具是jdk自帶的撼玄,也就意味著生成數(shù)字證書(shū)和文件簽名不是Android的專(zhuān)利,jarsigner主要是用來(lái)給jar文件簽名的墩邀。配置了JAVA環(huán)境變量掌猛,keytool和jarsigner可以直接在命令行下使用。zipalign 可能新老版本不太相同眉睹,可以在ANDROID_HOME下全局搜索zipalign.exe文件荔茬,以下是我電腦上的文件路徑:


image.png


生成未經(jīng)簽名的apk文件

Android app 的打包分為 debug 和 release 兩種,后者是用來(lái)發(fā)布到應(yīng)用商店的版本竹海。在開(kāi)發(fā)ionix項(xiàng)目是慕蔚,使用默認(rèn)命令(ionic cordova build android)打包出來(lái)的是debug apk文件。要打包 release 版本的apk文件斋配,只需要在后面加一個(gè) --release 參數(shù)即可:

ionic cordova build android --release
執(zhí)行該命令后孔飒,會(huì)在   ionic項(xiàng)目根目錄\platforms\android\build\outputs\apk    目錄 
下生成一個(gè) “android-release-unsigned.apk” 文件,這個(gè)apk文件就是 沒(méi)有使用默認(rèn)簽名的 文件许起。


簽名

使用keytool 生成數(shù)字證書(shū)
keytool -genkey -v -keystore spilledyear.keystore -alias spilledyear.keystore -keyalg RSA -validity 36500

keytool是工具名稱(chēng)  
-genkey意味著執(zhí)行的是生成數(shù)字證書(shū)操作 
-v表示將生成證書(shū)的詳細(xì)信息打印出來(lái)十偶,顯示在dos窗口中  
-keystore spilledyear.keystore 表示生成的數(shù)字證書(shū)的文件名為“ spilledyear.keystore”(spilledyear可以取自己的名字) 
-alias spilledyear.keystore 表示證書(shū)的別名為“spilledyear.keystore”,當(dāng)然可以不和上面的文件名一樣 
-keyalg RSA 表示生成密鑰文件所采用的算法為RSA 
-validity 36500 表示該數(shù)字證書(shū)的有效期為36500天园细,意味著36500天之后該證書(shū)將失效 

在執(zhí)行上面的命令生成數(shù)字證書(shū)文件時(shí),會(huì)提示你輸入一些信息接校,包括證書(shū)的密碼猛频,如圖所示:


keystore.png
使用jarsigner為app簽名
jarsigner -verbose -keystore spilledyear.keystore -signedjar zmjj.apk android-release-unsigned.apk spilledyear.keystore

jarsigner是工具名稱(chēng) 
-verbose表示將簽名過(guò)程中的詳細(xì)信息打印出來(lái)狮崩,顯示在dos窗口中
-keystore spilledyear.keystore 表示簽名所使用的數(shù)字證書(shū)所在位置,沒(méi)有寫(xiě)路徑表示在當(dāng)前目錄下
-signedjar zmjj.apk android-release-unsigned.apk 表示給android-release-unsigned.apk文件簽名鹿寻,簽名后的文件名稱(chēng)為zmjj.apk 
spilledyear.keystore 表示證書(shū)的別名睦柴,對(duì)應(yīng)于生成數(shù)字證書(shū)時(shí)-alias參數(shù)后面的名稱(chēng)

運(yùn)行該命令,結(jié)果如下圖所示:


jarsigner01.png

jarsigner02.png

jarsigner03.png
使用zipalign優(yōu)化已簽名的apk

此步驟時(shí)非必需操作毡熏,但是建議這么做坦敌。

zipalign -v 4 zmjj.apk zmjj_aligned.apk
zipalign是工具名稱(chēng) 
-v表示在DOS窗口打印出詳細(xì)的優(yōu)化信息 
zmjj.apk zmjj_aligned.apk 表示對(duì)已簽名文件 zmjj.apk進(jìn)行優(yōu)化,優(yōu)化后的文件名為zmjj_aligned.apk

執(zhí)行以上命令痢法,結(jié)果如下圖所示:


image.png

此時(shí)在目錄下又多生成了一個(gè)文件狱窘,zmjj_aligned.apk ,也就是被壓縮優(yōu)化過(guò)的apk文件:


image.png

如果以前的程序是采用默認(rèn)簽名的方式(即debug簽名)财搁,一旦換了新的簽名蘸炸,應(yīng)用將不能覆蓋安裝,必須將原先的程序卸載掉尖奔,才能安裝上搭儒。因?yàn)槌绦蚋采w安裝主要檢查兩點(diǎn):

  • 兩個(gè)程序的入口Activity是否相同。兩個(gè)程序如果包名不一樣提茁,即使其它所有代碼完全一樣淹禾,也不會(huì)被視為同一個(gè)程序的不同版本;
  • 兩個(gè)程序所采用的簽名是否相同茴扁。如果兩個(gè)程序所采用的簽名不同稀拐,即使包名相同,也不會(huì)被視為同一個(gè)程序的不同版本丹弱,不能覆蓋安裝德撬。

另外,可能有人可能會(huì)認(rèn)為反正debug簽名的應(yīng)用程序也能安裝使用躲胳,那也沒(méi)有必要自己簽名了蜓洪。千萬(wàn)不要這樣想,debug簽名的應(yīng)用程序有這樣兩個(gè)限制坯苹,或者說(shuō)風(fēng)險(xiǎn):

  • debug簽名的應(yīng)用程序不能在Android 應(yīng)用商店上架銷(xiāo)售隆檀,它會(huì)強(qiáng)制你使用自己的簽名。
  • debug.keystore在不同的機(jī)器上所生成的可能都不一樣粹湃,就意味著如果換了機(jī)器對(duì)app打包升級(jí)恐仑,那么將會(huì)出現(xiàn)上面那種程序不能覆蓋安裝的問(wèn)題。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末为鳄,一起剝皮案震驚了整個(gè)濱河市裳仆,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌孤钦,老刑警劉巖歧斟,帶你破解...
    沈念sama閱讀 219,188評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件纯丸,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡静袖,警方通過(guò)查閱死者的電腦和手機(jī)觉鼻,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)队橙,“玉大人坠陈,你說(shuō)我怎么就攤上這事【杩担” “怎么了仇矾?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,562評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)吹由。 經(jīng)常有香客問(wèn)我若未,道長(zhǎng),這世上最難降的妖魔是什么倾鲫? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,893評(píng)論 1 295
  • 正文 為了忘掉前任粗合,我火速辦了婚禮,結(jié)果婚禮上乌昔,老公的妹妹穿的比我還像新娘隙疚。我一直安慰自己,他們只是感情好磕道,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,917評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布供屉。 她就那樣靜靜地躺著,像睡著了一般溺蕉。 火紅的嫁衣襯著肌膚如雪伶丐。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,708評(píng)論 1 305
  • 那天疯特,我揣著相機(jī)與錄音哗魂,去河邊找鬼。 笑死漓雅,一個(gè)胖子當(dāng)著我的面吹牛录别,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播邻吞,決...
    沈念sama閱讀 40,430評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼组题,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了抱冷?” 一聲冷哼從身側(cè)響起崔列,我...
    開(kāi)封第一講書(shū)人閱讀 39,342評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎徘层,沒(méi)想到半個(gè)月后峻呕,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體利职,經(jīng)...
    沈念sama閱讀 45,801評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡趣效,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,976評(píng)論 3 337
  • 正文 我和宋清朗相戀三年瘦癌,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片跷敬。...
    茶點(diǎn)故事閱讀 40,115評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡讯私,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出西傀,到底是詐尸還是另有隱情斤寇,我是刑警寧澤,帶...
    沈念sama閱讀 35,804評(píng)論 5 346
  • 正文 年R本政府宣布拥褂,位于F島的核電站娘锁,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏饺鹃。R本人自食惡果不足惜莫秆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,458評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望悔详。 院中可真熱鬧镊屎,春花似錦、人聲如沸茄螃。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,008評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)归苍。三九已至用狱,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間拼弃,已是汗流浹背夏伊。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,135評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留肴敛,地道東北人署海。 一個(gè)月前我還...
    沈念sama閱讀 48,365評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像医男,于是被迫代替她去往敵國(guó)和親砸狞。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,055評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,178評(píng)論 25 707
  • 參考什么是 Android 簽名機(jī)制镀梭,Bluebox Security 發(fā)現(xiàn)的漏洞有何威脅刀森? Android應(yīng)用程...
    合肥黑閱讀 2,073評(píng)論 1 16
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)报账,斷路器研底,智...
    卡卡羅2017閱讀 134,664評(píng)論 18 139
  • 1.介紹 如果你正在查閱build.gradle文件的所有可選項(xiàng)埠偿,請(qǐng)點(diǎn)擊這里進(jìn)行查閱:DSL參考 1.1新構(gòu)建系統(tǒng)...
    Chuckiefan閱讀 12,138評(píng)論 8 72
  • 版權(quán)聲明 本文首發(fā)于微信公眾賬號(hào): 小臉寶寶(leige_2017) 注意:歡迎轉(zhuǎn)載,無(wú)需授權(quán) 房?jī)r(jià)就像噴泉榜晦,無(wú)論...
    雷哥復(fù)利筆記閱讀 665評(píng)論 1 2