1. 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通過執行如下命令嘗試:
2. 如何對Android的APP進行簽名
簽名方法:
1.使用Keytool 和jarsigner工具簽名(在jdk/bin目錄下)
1.生成簽名keystore:
確保電腦上安裝了JDK,因為我們將使用JDK自帶的創建和管理數字證書的工具Keytool。在命令行下輸入如下命令:
keytool -genkey -v -keystore app.keystore -alias alias_name -keyalg RSA -validity 20000
-alias 後面跟的是別名這里是alias_name
-keyalg 是加密方式這里是RSA
-validity 是有效期這里是20000
-keystore 就是要生成的keystore的名稱這里是app.keystore
然後按回車鍵
按回車後首先會提示你輸入的密碼:這個在簽腔譽名時要用的,要記住
然後會再確認你的密碼。
之後會依次叫你輸入姓名、組織單位、組織名稱、城市區域、省份名稱、國家代碼(CN)等。
Keytool的詳細參數請參考:
http://www.android123.com.cn/androidkaifa/173.html
2.簽名:
jarsigner -verbose -keystore app.keystore -signedjar app_signed.apk app.apk alias_name
-keystore: keystore的名稱
-signedjar app_signed.apk: 指定簽名後生成的APK名稱
app.apk: 目標APK
然後按回車:會要氏帆求輸入剛才設置的密碼,輸入後按回車就開始簽名了。
3.查看簽名:
jarsigner -verify app_signed.apk
查看是否簽名,如果已經簽名會列印 "jar verified".
jarsigner -verify -verbose -certs app_signed.apk
查看簽名詳細信息。
4.通過zipalign工具進行優化apk(android自帶的工具,./build/tools/zipalign)
zipalign -v 4 app_signed.apk androidres.apk 對apk優化
zipalign -c -v 4 androidres.apk 查看apk是否經過優化
2.使用eclipse ADT工具簽名
在Package Explorer 窗口,右鍵,選擇Android Tools--->Export Signed Application Package 然後按照提示一步一步,生成已簽名的apk。通過eclipse也可以導出未簽名的APK文件。
註:需要輸入兩次密碼,第一次是私鑰密碼,第二次時私鑰別名的伍核段密碼。
3.eclipse在debug模式下自動簽名(無須手動配置):
在debug模式下用eclipse 的ADT為android簽名,只要應用程序在eclipse下開發,系統就會自動給apk簽名和優化。
在Eclipse中Windows > Preferences > Android > Build可以看到你keysotre的位置
3. 如何對Android的APP進行簽名
1.簽名的步驟
a.創建key
b.使用步驟a中產生的key對apk簽名
2.具體操作
方法一: 命令行下對apk簽名(原理)
創建key,需要用到keytool.exe (位於jdk1.6.0_24jrein目錄下),使用產生的key對apk簽名用到的是jarsigner.exe (位於jdk1.6.0_24in目錄下),把上兩個軟體所在的目錄添加到環境變數path後,打開cmd輸入
D:>keytool -genkey -alias demo.keystore -keyalg RSA -validity 40000 -keystore demo.keystore
/*說明:-genkey 產生密鑰
-alias demo.keystore 別名 demo.keystore
-keyalg RSA 使用RSA演算法對簽名加密
-validity 40000 有效期限4000天
-keystore demo.keystore */
D:>jarsigner -verbose -keystore demo.keystore -signedjar demo_signed.apk demo.apk demo.keystore
/*說明:-verbose 輸出簽名的詳細信息
-keystore demo.keystore 密鑰庫位置
-signedjar demor_signed.apk demo.apk demo.keystore 正式簽名,三個參數中依次為簽名後產生的文件demo_signed,要簽名的文件demo.apk和密鑰庫demo.keystore.*/
注意事項:android工程的bin目錄下的demo.apk默認是已經使用debug用戶簽名的,所以不能使用上述步驟對此文件再次簽名。正確步驟應該是:在工程點擊右鍵->Anroid Tools-Export Unsigned Application Package導出的apk採用上述步驟簽名。
方法二:使用Eclipse導出帶簽名的apk
Eclipse直接能導出帶簽名的最終apk,非常方便,推薦使用,步驟如下:
第一步:導出。
第二步:創建密鑰庫keystore,輸入密鑰庫導出位置和密碼,記住密碼,下次Use existing keystore會用到。
第三步:填寫密鑰庫信息,填寫一些apk文件的密碼,使用期限和組織單位的信息。
第四步:生成帶簽名的apk文件,到此就結束了。
第五步:如果下次發布版本的時候,使用前面生成的keystore再簽名。
第六步:Next,Next,結束!
方法三:使用IntelliJ IDEA導出帶簽名的apk
方法步驟基本和Eclipse相同,大概操作路徑是:菜單Tools->Andrdoid->Export signed apk。
4. 怎麼使用命令對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工具進行簽名。在命令行窗口輸入如下命令:
5. 安卓 自動簽名 以及如何驗證一個apk包是用你的簽名文件簽名的
## 使用自動簽名的方法
1. 創建或者修改 ~/.gradle/gradle.properties
2. 在gradle.properties 文件中增加下面的內容.(具體內容需要根據實際來更改)
STORE_PASSWORD=xysys
KEY_ALIAS=xxsasd
KEY_PASSWORD=988asdf
3. 這樣每次build的時候,總是用keystore來簽名,不會用生成的debug來簽名了
## 使用命令行來構建APK
進入項目最高層目錄,找到 gradlew. 執行下面的命令來構建所有類型的APK,自動使用官方簽名
## 驗證簽名是官方簽名
1. 使用keytool 獲取apk包的指紋
例如:
2. 查看keystore的指紋
apk的簽名指紋跟keystore中的指紋一致表明該包是用keystore來簽名的。
注意:若java版本是7之前的,需要先把apk解壓,
來看包的指紋。
6. 用命令給apk簽名
給apk簽名。
用已有的jks文件帶賀給apk簽名。
先打開jdk文件夾,例如E:\Program Files\Java\jdk1.8.0_201\bin。
然後打開cmd輸入以下命令
其中alias就是當初創建簽名文件時所設定的,碰塵不能笑行禪隨便寫。
在簽名之前應當刪除apk中META-INF中的文件,以免簽名沖突。
2021年8月4日
7. 怎麼給Android應用程序簽名
1、准備工作
apk的簽名工作可以通過兩種方式來完成:
1)通過ADT提供的圖形化界面完成apk簽名;
2)完全通過DOS命令來完成apk簽名
我比較喜歡第2)種方式,所以下面將講解如何通過命令的方式完成apk簽名。
給apk簽名一共要用到3個工具,或者說3個命令,分別是:keytool、jarsigner和zipalign,下面是對這3個工具的簡單介紹:
1)keytool:生成數字證書,即密鑰,也就是上面說到的擴展名為.keystore的那類文件;
2)jarsigner:使用數字證書給apk文件簽名;
3)zipalign:對簽名後的apk進行優化,提高與Android系統交互的效率(Android SDK1.6版本開始包含此工具)
從這3個工具的作用也可以看出,這3個工具的使用順序。通常我們自己所開發的所有應用程序,都是使櫻拆用同樣的簽名,即使用同一個數字證書,這就意味著:如果你是第一次做Android應用程序簽名,上面的3個工具都將用到;但如果你已經有數字證書了,以後再給其它apk簽名時,只需要用到jarsigner和zipalign就可以完成。
為了方便使用上面3個命令,首先需要將上面3個工具所在路徑添加到環境變數path中(我說的是為了方便使用,沒有說必須要這么做)。怎麼配置環境變數就不在此講解了,這里需要說一下這3個工具默認所在的路徑:
1)keytool:該工具位於jdk安裝路徑的bin目錄下;
2)jarsigner:該工具位於jdk安裝路徑的bin目錄下;
3)zipalign:該工具位於android-sdk-windows/tools/目錄下
不知道大家是否注意到keytool和jarsigner兩個工具是jdk自帶的,也就意味著生成數字證書和文件簽名不是Android的專利;另外從字面上理解jarsigner也能猜得出該工具主要是用來脊殲棗給jar文件簽名的。
2、生成未經簽名的apk文件
既然我們要自己對apk進行簽名,就不再需要ADT默認幫我們簽名了。如何得到一個未經簽名的apk文件呢?打開Eclipse,在Android工程名稱上點擊右鍵,依次選擇「Android Tools」 - 「Export Unsigned Application Package ...」,然後選擇一個存儲位置保存即可。這樣就得到了一個未經簽名的apk文件。
3、使用keytool工具生成數字證書
keytool -genkey -v -keystore liufeng.keystore -alias liufeng.keystore -keyalg RSA -validity 20000
說明:
1)keytool是工具名稱,-genkey意味著執行的是生成數字證書操作,-v表示將生成證書的詳細信息列印出來,顯示在dos窗口中;
2)-keystore liufeng.keystore 表示生成的數字證書的文件名為「改檔liufeng.keystore」;
3)-alias liufeng.keystore 表示證書的別名為「liufeng.keystore」,當然可以不和上面的文件名一樣;
4)-keyalg RSA 表示生成密鑰文件所採用的演算法為RSA;
5)-validity 20000 表示該數字證書的有效期為20000天,意味著20000天之後該證書將失效