1. 程式人生 > >Android APK及簽名

Android APK及簽名

生成apk最懶惰的方法是:
只要你執行過android專案,到工作目錄的bin資料夾下就能找到與專案同名的apk檔案,這種apk預設是已經使用debug使用者簽名的。

如果想要自己給apk簽名:

1.簽名的意義
  為了保證每個應用程式開發商合法ID,防止部分開放商可能通過使用相同的Package Name來混淆替換已經安裝的程式,我們需要對我們釋出的APK檔案進行唯一簽名,保證我們每次釋出的版本的一致性(如自動更新不會因為版本不一致而無法安裝)。
2.簽名的步驟
  a.建立key
  b.使用步驟a中產生的key對apk簽名
3.具體操作
  方法一: 命令列下對apk簽名(原理)
  建立key,需要用到keytool.exe (位於jdk1.6.0_24\jre\bin目錄下),使用產生的key對apk簽名用到的是jarsigner.exe (位於jdk1.6.0_24\bin目錄下),把上兩個軟體所在的目錄新增到環境變數path後,開啟cmd輸入
D:\>keytool -genkey -alias demo.keystore -keyalg RSA -validity 40000 -keystore demo.keystore/*說明:-genkey 產生金鑰       -alias demo.keystore 別名 demo.keystore       -keyalg RSA 使用RSA演算法對簽名加密       -validity 40000 有效期限4000天       -keystore demo.keystore */D:\>jarsigner -verbose -keystore demo.keystore -signedjar demo_signed.apk demo.apk demo.keystore/*說明:-verbose 輸出簽名的詳細資訊       -keystore  demo.keystore 金鑰庫位置       -signedjar demor_signed.apk demo.apk demo.keystore 正式簽名,三個引數中依次為簽名後產生的檔案demo_signed,要簽名的檔案demo.apk和金鑰庫demo.keystore.*/
  注意事項:android工程的bin目錄下的demo.apk預設是已經使用debug使用者簽名的,所以不能使用上述步驟對此檔案再次簽名。正確步驟應該是:在工程點選右鍵->Anroid Tools-Export Unsigned Application Package匯出的apk採用上述步驟簽名。
  方法二:使用Eclipse匯出帶簽名的apk


  Eclipse直接能匯出帶簽名的最終apk,非常方便,推薦使用,步驟如下:
  第一步:匯出。


  第二步:建立金鑰庫keystore,輸入金鑰庫匯出位置和密碼,記住密碼,下次Use existing keystore會用到。


  第三步:填寫金鑰庫資訊,填寫一些apk檔案的密碼,使用期限和組織單位的資訊。


  第四步:生成帶簽名的apk檔案,到此就結束了。


  第五步:如果下次釋出版本的時候,使用前面生成的keystore再簽名。


  第六步:Next,Next,結束!
  方法三:使用IntelliJ IDEA匯出帶簽名的apk
  
方法步驟基本和Eclipse相同,大概操作路徑是:選單Tools->Andrdoid->Export signed apk。
4.簽名之後,用zipalign(壓縮對齊)優化你的APK檔案。


  未簽名的apk不能使用,也不能優化。簽名之後的apk谷歌推薦使用zipalign.exe(位於android-sdk-windows\tools目錄下)工具對其優化:
D:\>zipalign -v 4 demo_signed.apk final.apk
  如上,zipalign能夠使apk檔案中未壓縮的資料在4個位元組邊界上對齊(4個位元組是一個性能很好的值),這樣android系統就可以使用mmap()(請自行查閱這個函式的用途)函式讀取檔案,可以在讀取資源上獲得較高的效能,
  PS:1.在4個位元組邊界上對齊的意思就是,一般來說,是指編譯器吧4個位元組作為一個單位來進行讀取的結果,這樣的話,CPU能夠對變數進行高效、快速的訪問(較之前不對齊)。
          2.對齊的根源:android系統中的Davlik虛擬機器使用自己專有的格式DEX,DEX的結構是緊湊的,為了讓執行時的效能更好,可以進一步用"對齊"進一步優化,但是大小一般會有所增加。
5.簽名對你的App的影響。

   你不可能只做一個APP,你可能有一個巨集偉的戰略工程,想要在生活,服務,遊戲,系統各個領域都想插足的話,你不可能只做一個APP,谷歌建議你把你所有的APP都使用同一個簽名證書。
   使用你自己的同一個簽名證書,就沒有人能夠覆蓋你的應用程式,即使包名相同,所以影響有:
  1) App升級。 使用相同簽名的升級軟體可以正常覆蓋老版本的軟體,否則系統比較發現新版本的簽名證書和老版本的簽名證書不一致,不會允許新版本安裝成功的。
  2) App模組化。android系統允許具有相同的App執行在同一個程序中,如果執行在同一個程序中,則他們相當於同一個App,但是你可以單獨對他們升級更新,這是一種App級別的模組化思路。
  3) 允許程式碼和資料共享。android中提供了一個基於簽名的Permission標籤。通過允許的設定,我們可以實現對不同App之間的訪問和共享,如下:
AndroidManifest.xml:<permission android:protectionLevel="normal" />
其中protectionLevel標籤有4種值:normal(預設值),dangerous, signature,signatureOrSystem。簡單來說,normal是低風險的,所有的App不能訪問和共享此App。dangerous是高風險的,所有的App都能訪問和共享此App。signature是指具有相同簽名的App可以訪問和共享此App。signatureOrSystem是指系統image中App和具有相同簽名的App可以訪問和共享此App,谷歌建議不要使用這個選項,因為簽名就足夠了,一般這個許可會被用在在一個image中需要共享一些特定的功能的情況下。

相關推薦

Android APK簽名

生成apk最懶惰的方法是: 只要你執行過android專案,到工作目錄的bin資料夾下就能找到與專案同名的apk檔案,這種apk預設是已經使用debug使用者簽名的。 如果想要自己給apk簽名: 1.簽名的意義   為了保證每個應用程式開發商合法ID,防止部分開放商可能通過使用相同的Package Name

android apk重新[簽名]

1,刪除之前的簽名檔案 用解壓縮工具開啟,刪除 [META-INF] 資料夾 2,開啟命令列視窗 3,[保證簽名檔案和apk在同一級目錄下] 然後執行如下命令,將 (xx) 處替換自己的簽名、apk 資訊即可 jarsigner -verbose -keystore (簽名檔案 jks/keystor

android apk簽名和許可權問題

一. android apk的簽名問題(http://blog.csdn.net/lyq8479/article/details/6401093) 1.為什麼要給Android應用程式簽名?       如果只能用一句簡單的話語來回答這個問題的話,我會說:“這是Android系統所要求的”。

關於android apk系統簽名

signapk.jar與eclipse export外掛預設賦予程式一個DEBUG許可權的簽名 signapk.jar包含有系統許可權(system api, permission),而eclipse export外掛預設賦予程式一個DEBUG許可權的簽名。 注: signapk.jar   位於 out/

android apk v1 簽名驗證分析

作者:jafon.tian Android的應用包格式具有防篡改,防重打包的能力,這是如何做到的?祕密就隱藏在META-INF資料夾中,下面通過QQ安裝包的分析來進行詳細的說明和分析。 1. 準備 1 到QQ官網下載Android安裝包mobileq

Android apk 重新簽名

首先去http://www.downcc.com/soft/71838.html 下載簽名工具,然後按著教程進行簽名。注意:安裝重新簽名好的APK時,要解除安裝之前安裝的APK(如果版本號一樣的話) 1. 工具文字顯示語言選擇(本工具目前只支援漢語與英語) 2

Android apk 簽名程式碼混淆、資原始檔混淆、加固整套流程

準備:*.ks  proguard-android.txt', 'proguard-rules.pro(取一) 上述是簽名檔案及混淆檔案 通過AS進行混淆簽名打包apk 將該apk進行解壓可看出只是程式碼進行了混淆但是資原始檔沒有進行混淆 下面進行資原始檔進行混淆,也是通

Android APK反編譯去廣告漢化,apk優化簽名

概述 Android APK反編譯是個有趣的事情。我們可以對APK反編譯進行漢化破解工作等。 Android APK反編譯主要涉及三個工具的使用,分別是 apktooldex2jarjd-gui(即jad)最後介紹了一款國人開發的整合反編譯工具AndroidKiller

Android 程序打包簽名

android 程序 為什麽要簽名??? 開發Android的人這麽多,完全有可能大家都把類名,包名起成了一個同樣的名字,這時候如何區分?簽名這時候就是起區分作用的。 由於開發商可能通過使用相同的Package Name來混淆替換已經安裝的程序,簽名可以保證相當名字,但是簽名不同的包不被替

7.xamarin.android 發布簽名與控制apk大小

其他 alt 等待 標識 執行 國內 ima 應用 需要 概述 做了xamarin android 後大家想打包一個apk,發布給其他人使用本章我們將帶領大家如何打包簽名一個apk。 打包 對於VS2017 或者是VS MAC來說打包一個APK非常簡單。 首選

Android Studio生成簽名安裝包(Generate Signed APK

打開 對話 store microsoft oid 選擇 安裝 height androi 一 打開構建對話框。 二 創建新的密鑰庫(key store) 可以選擇已創建的密鑰庫,也可以選擇創建新的密鑰庫。 創建完成後,自動導入。

Android簽名文件轉化為pk8和pem來對apk簽名

cer ava key 用法 重簽名 pen 打開 ckey 就是 當我們需要修改已經打包好的apk中的某個文件時,比如改下圖標,我們勢必要采用反編譯apk,改文件,重編譯apk,重簽名才行,參考:https://www.cnblogs.com/zndxall/p

android apk 簽名 之 在原始碼環境裡如何完成

假設Android原始碼路徑為 ProPath/ 且cd到此路徑下,之後執行 1. cp  ./build/target/product/security/releasekey.x509.pem  ./ 2. cp  ./build/target/pr

AndroidStudio配置數字證書籤名切換debug和release(包含使用adb命令對apk進行簽名

使用adb命令對apk進行簽名: jarsigner -verbose -keystore keystore.jks -signedjar signed.apk unsigned.apk alias_

Android程式的簽名保護繞過方法

轉自:https://blog.csdn.net/wulianghuan/article/details/22497621   隨著Android 市場的擴大,各類盜版、破解、打包黨紛紛湧現,其使用的手法無非是apk _> smali ->修改程式碼 ->重打包簽

android apk反編譯(反編譯—改程式碼—再編譯—簽名

1.工具(請到網站搜尋並自行下載):     ①apktool(反編譯:能得到圖片資源與佈局檔案等)     ②dex2jar(反編譯:能得到activity等java程式碼)     ③jd-gui(檢視dex2jar得到的java檔案)     ④手機簽名工具

ionic 打包簽名android APK 過程

1. 編譯打包安卓APK ionic cordova build android --release --prod 2. 生成簽名 keystore keytool -genkey -v -keystore app.keystore -alias app.keystore -keyalg

如何給Androidapk重新簽名

也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!                使用jdk自帶的jarsigner就可以,但是要注意jdk的版本,1.6以上的版本可能存在問題。如果簽名執行提示沒有簽名(INSTALL_PARSE_FAILE

Eclipse將Android專案打包成apk簽名

參考博文:http://blog.csdn.net/zhouxinhong/article/details/7599950                     http://www.cnblogs.com/tianguook/archive/2012/09/27/270

Android之重新簽名APK

Android逆向開發中,要對原來apk重新簽名,可以使用以下方法: 1、修改、替換   修改 apk 字尾為 zip   解壓縮 .zip 檔案   修改你想替換的內容   移除META_INF資料夾(重要1)