利用標準的java工具keytool.exe(位于jdk\jre\bin目錄下)創(chuàng)建key,利用jarsigner.exe工具使用生成的key來生成證書和給程序簽名(位于jdk\bin目錄下)。 Win +R 運行cmd,進入目錄D:\temp(注:使用該目錄為示例工作目錄) a)、創(chuàng)建可以,運行如下命令 keytool -genkey -alias demo.keystore -keyalg RSA -validity 20000 -keystore demo.keystore /*說明:keytool工具是Java JDK自帶的證書工具 -genkey參數(shù)表示:要生成一個證書(版權、身份識別的安全證書) -alias參數(shù)表示:證書有別名,-alias demo.keystore表示證書別名為:demo -keyalg RSA表示加密類型,RSA表示需要加密,以防止別人盜取 -validity 20000表示有效時間20000天( K3 -keystore demo.keystore表示要生成的證書名稱為demo */ b)、刪除之前的簽名文件 用解壓縮工具解打開apk文件(如:更改a.apk 為a.zip,便可用壓縮工具打開,并找到下面的目錄META-INF下的 CERT.RSA和CERT.SF文件,并刪除該文件。刪除后,再次更改后綴名為.apk ; 注: META-INF目錄:存放簽名后的CERT和MANIFEST文件,用于識別軟件的簽名及版權。 Rres目錄:存放各種Android原始資源,包括:動畫anim、圖片drawable、布局layout、menu菜單、xml等等 AndroidManifest.xml編碼后的Android項目描述文件,包括了Android項目的名稱、版本、權限、程序組件描述等等 aclasses.dex編譯后Class被dx程序轉換成Dalvik虛擬機的可執(zhí)行字節(jié)碼文件 qresources.arsc所有文本資源的編譯產(chǎn)物,里面包含了各Location對應的字符串資源。 c)、使用生成的key對apk簽名,運行如下命令: jarsigner -verbose -keystore demo.keystore -signedjar demo_signed.apk demo.apk demo.keystore /*說明:jarsigner是Java的簽名工具 -verbose參數(shù)表示:顯示出簽名詳細信息 -keystore表示:使用當前目錄中的demo.keystore簽名證書文件。 -signedjar demor_signed.apk demo.apk demo.keystore 正式簽名,三個參數(shù)中依次為簽名后產(chǎn)生的文件demo_signed,要簽名的文件demo.apk和密鑰庫demo.keystore. */ (注:查看某個apk是否經(jīng)過了簽名方法,jarsigner –verify demo.apk。優(yōu)化:簽名后需要做對齊優(yōu)化處理zipalign -v 4 your_project_name-unaligned.apk your_project_name.apk ) 將apk文件復制到signapk.jar的同文件夾里,執(zhí)行java –jar signapk.jar platform.x509.pem platform.pk8 test.apk test_new.apk
|
|