1. android開發 怎麼給apk文件用已有的簽名文件進行簽名,不用eclipse
給apk文件簽名主要分三步:
1、創建證書
2、簽名
3、優化(可選)
1)使用jdk的keytool工具生成簽名用的證書> keytool -genkey -v -alias CERT -keyalg RSA -keysize 2048 -validity 10000 -keystoreCERT.keystore 創建過程需要輸入一些標識信息和密碼,一些重要的參數值說明如下(根據自己的需要要進行相應的修改): CERT.keystore ---- 證書保存的文件名 CERT ---- 證書的別名 10000 ---- 10000天的有效期 2048 ---- 默認為1024 bits,Android 建議使用2048 bits或更高其他的詳細信息可以使用keytool -help查看幫助 證書生成後使用如下命令可以查看證書的信息:> keytool -list -alias CERT -keystore CERT.keystore
2)使用jdk的jarsigner工具對apk文件簽名> jarsigner -verbose -keystore CERT.keystore to_sign.apk CERT 簽名過程需要輸入證書的密碼,一些重要的參數值說明如下(根據自己的需要要進行相應的修改): CERT.keystore ---- 證書保存的文件名 CERT ---- 證書的別名 待簽名的apk文件根根目錄下如果有文件夾「META-INFO」,請先刪除(重新簽名就需要這樣做)。如果不想創建過程輸出太多信息,可以刪除「-verbose」 。上述簽名會直接覆蓋原來的文件,如果不想被覆蓋而簽名為另外的新文件 signed.akp,只需將 to_sign.apk 改為 -signedjar to_sign.apk signed.akp 即可。簽名後可以使用如下命令驗證是否簽名成功: > jarsigner -verify to_sign.apk 如果需要查看更詳細的驗證信息,可修改為:> jarsigner -certs -verbose -verify to_sign.apk
3)使用android sdk的zipalign工具優化已簽名的apk文件> zipalign -v 4 unaligned.apk aligned.apk 注意要在簽名後再zipalign。這個工具不是jdk自帶的,而是在%ANDROID_HOME%\tools\zipalign.exe。
2. 怎麼使用命令對APK包進行簽名
上面命令中各選項說明如下。
-genkeypair:指定生成數字證書
-alias:指定生成數字證書的別名
-keyalg:指定生成數字證書的演算法,使用RSA演算法
-validity:指定生成的數字證書的有效期
-keystore:指定所生成的數字證書的儲存路徑
輸入上面的命令後按回車,會出現以交互方式讓用戶輸入數字證書keystore的密碼/作者/公司等詳細信息。
備註:這一步時生成屬於你們公司/你的數字證書,這一步只需要做一次即可。一旦數字證書創建成功之後,只要在該證書有效期內,可以一直重復使用該證書。
2.生成未簽名的APK安裝包。在Eclipse中右擊Android項目,在彈出的菜單中找到「Android Tools -->Export Unsigned Application Package...「菜單項,Eclipse彈出一個保存文件的對話框,當用戶選擇儲存文件後單擊」Finish」按鈕即可生成一個未簽名的APK安裝包。
備註:這一步是生成一個未簽名的APK按轉包,如果已經有未簽名的安裝包,那麼該步驟可以跳過
3.使用jarsigner命令對未簽名的APK安裝包進行簽名。JDK的安裝目錄下的bin子目錄下提供了jarsigner.exe工具進行簽名。在命令行窗口輸入如下命令:
3. 安卓手機,如何用APK簽名工具對APK進行簽名求詳細方法和步驟。
方法一: 命令行下對apk簽名(原理) 創建key,需要用到keytool.exe (位於jdk1.6.0_24\\jre\\bin目錄下),使用產生的key對apk簽名用到的是jarsigner.exe (位於jdk1.6.0_24\\bin目錄下),把上兩個軟體所在的目錄添加到環境變數path後,打開cmd輸入 D。
4. APK重新簽名或者更換APK簽名版本
在某些特殊情況下,需要對已經生成的apk進行重新簽名,或者對已經生成的apk更換簽名版本(v1/v2/v3/v4)。如何實現呢? 可以通過命令行對已生成的apk進行處理。
apksigner.jar通常包含在Android SDK中可。路徑一般是在Android SDK/build-tools/ {SDK版本} /lib/apksigner.jar
不同的SDK版本中均有一個,取最新版本的就好了。
使用壓縮軟體打開apk,刪除包內 /META-INF/ 文件夾及文件夾內所有文件,並重新壓縮文件。
准備好簽名證書及相關密碼和需要剛處理過得apk文件
示例:
執行命令
接著輸入證書保護密碼及別名密碼。
可以從此命令的輸出中看出當前生成的apk簽名情況。
可以通過如下命令行參數進行控制
--v1-signing-enabled true
--v2-signing-enabled true
--v3-signing-enabled false
使用的簽名版本還跟apk編譯時使用的最低SDK版本有關, 即min-sdk-version的值。如果設置的值大於等於26,即使添加--v1-signing-enabled true 也無法通過上述步驟簽V1版本的簽名--僅有V2簽名(Android Studio也是)。
可以對最後生成的apk通過執行如下命令嘗試: