使用
.使用Keytool 和jsigne工具簽名(在jdk/bin目錄下)
)生成簽名keystoe:
確保電腦上安裝了JDK,因爲我們將使用JDK自帶的創建和管理數字證書的工具Keytool。在命令行下輸入如下命令:
keytool -genkey - -keystoe pp.keystoe -lis lis_nme -keylg RSA -lidity 20000
-lis 後面跟的是別名這裏是lis_nme
-keylg 是加密方式這裏是RSA
-lidity 是有效期這裏是20000
-keystoe 就是要生成的keystoe的名稱這裏是pp.keystoe
然後按回車鍵,按回車後首先會提示你輸入的密碼,然後會再確認你的密碼。
之後會依次叫你輸入姓名、組織單位、組織名稱、城市區域、省份名稱、國家代碼(CN)等。
2)簽名:
jsigne -ebose -keystoe pp.keystoe -signedj pp_signed.pk pp.pk lis_nme
-keystoe: keystoe的名稱
-signedj pp_signed.pk: 指定簽名後生成的APK名稱
pp.pk: 目標APK
然後按回車:會要求輸入剛纔設置的密碼,輸入後按回車就開始簽名了。
3)查看簽名:
jsigne -eify pp_signed.pk
查看是否簽名,如果已經簽名會打印 “j eified”.
jsigne -eify -ebose -cets pp_signed.pk
查看簽名詳細信息。
4)通過ziplign工具進行優化pk(ndoid自帶的工具,./build/tools/ziplign)
ziplign - 4 pp_signed.pk ndoides.pk 對pk優化
ziplign -c - 4 ndoides.pk 查看pk是否經過優化
2.使用eclipse ADT工具簽名
在Pckge Exploe 窗口,右鍵,選擇Andoid Tools—>Expot Signed Appliction Pckge 然後按照提示一步一步,生成已簽名的pk。通過eclipse也可以導出未簽名的APK文件。
注意:需要輸入兩次密碼,第一次是私鑰密碼,第二次時私鑰別名的密碼。
3.eclipse在debug模式下自動簽名(無須手動配置):
在debug模式下用eclipse 的ADT爲ndoid簽名,只要應用程序在eclipse下開發,系統就會自動給pk簽名和優化。
在Eclipse中Windows > Pefeences > Andoid > Build可以看到你keysote的位置;
做CTS 認證時,需要用到Andoid系統簽名。通過mke -j4編譯出來的system.img使用的是test key,這種類型的key只適用於開發階段,而且這種祕鑰是公開的,誰都可以使用。當發佈一款ndoid產品,就需要另外給整個系統籤個名,防止被別人盜用。這種系統就是elese版本的Andoid系統。
、生成加密key文件
要對Andoid系統進行簽名,需要生成四種類型的key文件。
)elesekey (testkey)
b)medi
c)shed
d)pltfom
)/ndoid_sc/deelopment/tools目錄。
2)使用mke_key工具生成簽名文件。需要分別生成 elesekey,medi,shed,pltfom。
./mke_key elesekey ‘/C=CN/ST=JingSu/L=NnJing/O=Compny/OU=Deptment/CN=You Nme/emilAddess=YouE-milAddess’ (系統將會提示輸入針對各種key的密碼,按照提示輸入即可)
將會生成 elesekey.pk8 和 elesekey.x509.pem文件,其中 *.pk8是生成的私鑰,而*.x509.pem是公鑰,生成時兩者是成對出現的.
注意:如果出現 openssl : eloction eo :openssl : symbol …嘗試用 sudo 執行命令,問題解決了!
2.回到根目錄ndoid_sc。
命令執行的時候都最好在工程的根目錄下執行,要不然腳本用到的某些文件找不到的。
3.編譯系統
mke -j4 PRODUCT-geneic-use dist
其中geneic 表示生成的TARGET_PRODUCT類型爲geneic,
use代表TARGET_BUILD_VARIANT爲use版本。
編譯完成之後回在ndoid_sc/dist/目錄內生成個poduct_geneic-use_files開頭的zip文件.這就是我們需要進行簽名的文件系統.
4.開始簽名
./build/tools/elesetools/sign_tget_files_pks -d key_diectoy/ out/dist/poduct_modul-tget_files.zip out/dist/signed_tget_files.zip
通過sign_tget_files_pks 腳本,完成ndoid系統的簽名工作.
key_diectoy/ 表示key所在的目錄。
out/dist/poduct_modul-tget_files.zip 源文件。
out/dist/signed_tget_files.zip 生成簽名的目標文件。
可能會出現:
ERROR: no key specified fo:
ClendWidget.pk
Contcts_yellowpge.pk
SnsAppMin.pk
這表示,簽名並沒有成功,原因是由於有些pk程序已經簽過名了或者找不到對應的key. 這需要我們對pk設置過濾,不對上面的應用進行簽名.方法如下:
通過參數”-e <pknme>=” 來過濾這些應用.
./build/tools/elesetools/sign_tget_files_pks -d key_diectoy/ -e ClendWidget.pk= -e Contcts_yellowpge.pk= -e SnsAppMin.pk= -e out/dist/poduct_modul-tget_files.zip out/dist/signed_tget_files.zip
輸入該命令時會提示輸入key的密碼,會出現四次密碼輸入提示。分別爲四種類型的key的密碼。
5.生成imge文件
./build/tools/elesetools/img_fom_tget_files out/dist/signed-tget-files.zip signed-img.zip
用img_fom_tget_files 命令對生成的igned-tget-files.zip文件進行打包,signed-img.zip包含了boot.img,usedte.img,system.img文件等.
6.通過fstboot下載signed-img.zip文件
fstboot updte signed-img.zip
通過fstboot就可以把簽了名的系統文件傳到手機上了。