編輯:關於Android編程
Android應用以它的包名作為唯一標識。如果在同一部手機上安裝兩個包名相同的應用,後面安裝的應用就會覆蓋前面安裝的應用。為了避免這種情況的發生,Android要求對作為產品發布的應用進行簽名。
簽名主要有如下兩個作用:
1.確定發布者的身份。由於應用開發者可以通過使用相同包名來替換已經安裝的程序,因此使用簽名可以避免發生這種情況,也就是避免別人通過發布相同包名的程序來替換掉你發布的程序。
2.確保應用的完整性。簽名會對應用包中的每個文件進行處理,從而確保程序包中的文件不會被替換。
通過上面的介紹不難看出,Android應用簽名的作用類似於現實生活中的簽名。當開發者對Android應用簽名時,相當於告訴外界:該應用程序是由“我”開發的,“我”會對該應用程序負責----因為有簽名(簽名有密鑰),別人無法冒名頂替“我”;與此同時,“我”也無法冒名頂替別人。
注意:在應用的開發、調試階段,Eclipse的ADT插件或Ant工具會自動生成調試證書對Android應用簽名,因此部署、調試過程並沒有經過簽名。需要指出的是,如果要正式發布一個Android應用,必須使用合適的數字證書來給應用程序簽名,不能使用ADT插件或Ant工具生成的調試證書來發布。
開發的過程中我們大多數時候都會直接在Eclipse中對Android應用簽名,在Eclipse中對Android應用簽名的步驟如下:
1.右鍵點擊Android項目,在下拉菜單中選擇“AndroidTools”---->“ExportSignedApplicationPackage...”,操作如下:
點擊之後會彈出一個提示框,顯示如下:
選擇要導出的工程,因為是在要導出的工程上點的鼠標右鍵,所以默認就是要導出的工程,所以這一步不需要什麼操作,直接點“Next>”,顯示如下:
2.選中“Createnewkeystore”單選按鈕,按照格式填寫數字證書的存儲路徑和密碼。操作顯示如下:
3.按照上述格式填寫完成後點擊“Next>”,Eclipse會彈出如下提示框:
按照上圖所示填寫數字證書的詳細信息。
4.填寫完畢之後點擊“Next>”,顯示如下:
該窗口用於指定生成簽名後的APK安裝包的存儲路徑。
5.點擊“Finish”,完成簽名。Eclipse會在指定路徑下生成一個簽名後的APK安裝包。
上面的步驟制作了新的數字證書,一旦數字證書制作完成,以後就可以直接使用該數字證書簽名了。利用已有的數字證書進行簽名,請按照如下步驟進行:
1.在需要簽名的工程上點擊鼠標右鍵,默認工程不需要修改,直接點下一步,直到出現如下截圖:
點擊“Browse...”,選擇剛剛生成的數字簽名,操作顯示如下:
選中之後,輸入該數字簽名對應的密碼。
2.上述內容輸入之後,點擊“Next>”,顯示如下:
選擇制作該數字簽名時創建的別名為“keyzz”(我創建的是這個別名,大家根據自己創建的別名進行選擇)的key,並輸入創建該key時指定的密碼。
3.上述操作完成之後,點擊“Next>”,顯示如下:
選擇簽名後APK包的存儲路徑,上面黃色歎號提示的英文“Destinationfilealreadyexists”意思是目標文件已經存在,這個不用管,直接覆蓋之前的文件即可,如果不想覆蓋,就點“Browse...”,重新選擇一個存儲路徑。
4.選擇完之後,點“Finish”按鈕即可生成簽名後的APK包。
如果不想借助於Eclipse提供的方式對Android應用程序簽名,或在某些場合下,需要對一個“未簽名”的APK包進行簽名,則可通過“命令”來對Android應用進行手動簽名。
使用命令對Android應用簽名的步驟如下:
1.創建keystore庫。JDK的安裝目錄下的bin子目錄下提供了keytool.exe工具來生成數字證書。點擊“開始”--->“運行”,然後輸入“cmd”,在彈出的命令行界面用cd命令切換到你安裝的jdk的目錄裡(如果你已經添加到環境變量裡面了,那也可以不用切換到jdk的目錄下),我的是“C:\ProgramFiles\Java\jdk1.6.0_22\bin”,在命令行窗口輸入如下命令:
keytool-genkeypair-aliaszzfeng.keystore-keyalgRSA-validity1000-keystorezzfeng.keystore
上面命令中各選項說明如下:
-genkeypair:指定生成數字證書。
-alias:指定生成數字證書的別名。
-keyalg:指定生成數字證書的算法。使用RSA算法。
-validity:指定生成的數字證書的有效期(單位是天)。
-keystore:指定所生成的數字證書的存儲路徑
輸入上述命令後按回車鍵,接下來將會以交互式方式讓用戶輸入數字證書keystore的密碼、作者、公司等詳細信息,操作如下圖所示:
注意:該步驟的作用是生成屬於你們公司、你的數字證書,這個步驟只要做一次即可。一旦數字證書創建成功之後,只要在該證書有效期內,可以一直重復使用該證書。
2.生成未簽名的APK安裝包。在Eclipse中鼠標右鍵點擊Android項目,在下拉菜單中選擇“AndroidTools”---->“ExportUnsignedApplicationPackage...”,Eclipse會彈出一個保存文件的對話框,當我們選擇好存儲文件的位置和文件名後單擊“保存”(有的版本是“Finish”)按鈕即可生成一個未簽名的APK安裝包。操作顯示如下:
3.使用“jarsigner”命令對未簽名的APK安裝包進行簽名。在步驟1中到的目錄下有“jarsigner.exe”工具,可以用來進行簽名。命令行窗口輸入如下命令:
jarsigner-verbose-keystorezzfeng.keystore-signedjarBleDevManager-signed.apkBleDevManager.apkzzfeng.keystore
上面的命令中各選項的說明如下:
-verbose:指定生成詳細的輸出。
-keystore:指定數字證書的存儲路徑(上述命令直接用的數字證書名是因為數字證書就在當前目錄下,如果是其他目錄,需要在數字證書名前加相應的路徑)。
-signedjar:該選項的三個參數分別為簽名後的APK包、未簽名的APK包和數字證書的別名。
注意上述的命令中路徑和文件名等一定要跟自己的對應,因為你設置的路徑和文件名有可能跟我的不一樣,大家根據自己設置的對應修改一下即可。
輸入上述命令之後按回車鍵,接下來將會以交互式方式讓用戶輸入數字證書keystore的密碼,操作顯示如下:
簽名完成。
4.使用“zipalign.exe”工具優化APK安裝包。“zipalign.exe”是Android自帶的一個檔案整理工具,它可用於優化APK安裝包,從而提升Android應用與系統之間的交互效率,提升應用程序的運行速度。該工具存在於SDKtools下,我的路徑是“E:\adt-bundle-windows-x86-20130917\sdk\build-tools\19.1.0”,如果找不到,可以在sdk目錄下搜索一下。如果存在的路徑沒有設置到環境變量裡面去,那我們就在命令行中用cd命令切換到上述路徑中,並將剛簽過名的需要優化的APK安裝包也復制到該路徑下,然後在命令行窗口輸入如下命令:
zipalign-f-v4BleDevManager-signed.apkBleDevManager-signed-zip.apk
上面的命令中各選項說明如下:
-f:指定強制覆蓋已有的文件。
-v:指定生成詳細輸出。
4:指定檔案整理所基於的字節數,通常指定為4,也就是基於32位進行整理。
BleDevManager-signed.apk和BleDevManager-signed-zip.apk分別指定整理前的APK和整理後生成的APK。
運行上述命令,將會在當前目錄下生成一個“BleDevManager-signed-zip.apk”文件,這就是簽名完成且經過優化的APK安裝包,該安裝包可以對外發布了。操作顯示如下:
怎麼預防QQ號被盜,怎麼樣讓QQ號碼更加安全,手機qq設備鎖怎麼用?下面小編給大家帶來手機qq設備鎖設置教程,手機QQ4.62或以上版本才有此功能,一起來看
技術概念來源:[ 360開源插件框架,項目地址:https://github.com/DroidPluginTeam/DroidPlugin]一、Binder機制回顧在之
一. 三級緩存簡介如上圖所示,目前App中UI界面經常會涉及到圖片,特別是像“今日關注”新聞這類app中,圖片運用的幾率十分頻繁。當手機上需要顯示
package xiaosi.location; import android.app.Activity; import android.os.Bund