2012-06-06 140 views
17

目前我正在使用私有密鑰庫文件簽署apk,但我想用不同的密鑰庫文件簽署該apk。我怎樣才能辭職apk ..?Resign apk with different keystore

+1

沒有兄弟我不這麼認爲 – Trikaldarshi

+0

請解釋.1-你是否想要簽署同一個簽名的apk或同一個項目的新的apk ...... –

+0

我想要辭職相同的apk – Rookie

回答

24

你可以辭職,用不同的密鑰庫您的APK。

遵循以下步驟:

簽約發佈:$1.apk -> $1_release.apk"

第1步:刪除任何先前簽署

  • 更改您的.apk.zip的延伸。
  • 打開並刪除該文件夾META-INF
  • 擴展名更改爲.apk
    或者
    命令:zip [originalapk]
    例子:zip "$1".apk -d

步驟2:與發佈簽名。密鑰庫:

命令:

jarsigner –verbose –keystore [keystorefile] –signedjar [unalignedapk] [originalapk] alias_name 

實施例:

C:\Program Files\Java\jdk1.6.0_43\bin> jarsigner -verbose -keystore release.keystore -signedjar "$1"_unaligned.apk "$1".apk release 

步驟3:對齊

命令:zipalign -f 4 [unalignedapk] [releaseapk]

例子:

C:\Users\Downloads\adt-bundle-windows-x86\adt-bundle-windows-x86\sdk\too ls>zipalign -f 4 "$1"_unaligned.apk "$1"_release.apk 

第4步:清理

命令:rm 4 [unalignedapk]
例子:rm "$1"_unaligned.apk


附加指令可能會有所幫助:

  1. 要生成密鑰工具新的密鑰
keytool -genkey -alias -keystore
  1. 要列出鍵
keytool -list -keystore

注:

爲了簽署我們的協議,我們已將JDK從1.7降級到1.6.0_43更新。

原因:

從JDK 7中,默認簽名algorithim發生了變化,需要你指定的簽名和消化algorithims(-sigalg和-digestalg)當您簽訂APK。

命令:

jarsigner -verbose -sigalg MD5withRSA -digestalg SHA1 -keystore [keystorefile] [originalapk] alias_name 
7

您還可以使用開源的APK-resigner腳本,這是非常容易使用。

APK-resigner:https://github.com/onbiron/apk-resigner

./signapk.sh calculator.apk ~/.android/debug.keystore android androiddebugkey 

此外,如果你想與調試的關鍵簽署APK,你可以使用。

./signapk.sh calculator.apk 
6
  1. 刪除舊符號

    拉鍊-d XXXX。APK(您的APK文件)META-INF/*

  2. 標誌APK

    的jarsigner -verbose -keystore xxxx.keystore(密鑰庫)-signedjar out_sign.apk(OUTFILE)unsign.apk(unsign APK )xxxxxalias(您的別名)

  3. 如果標誌APK無法工作和JDK> = 1.7

    添加PARAMS -digestalg SHA1 -sigalg MD5withRSA
    的jarsigner -verbose -digestalg SHA1 -sigalg MD5withRSA -keystore xxxx.keystore(密鑰庫)-signedjar out_sign.apk(OUTFILE)unsign.apk(unsign APK)xxxxxalias(您的別名)

相關問題