2019獨角獸企業重金招聘Python工程師標準>>>
【Android】命令行jarsigner簽字和解決找不到證書鏈錯誤
1、簽名失敗
$jarsigner -verbose -keystore /Volumes/Study/resourcesLib/Qunero-achivements/AndroidApp/QuLordy-signed-key -signedjar ./signed_XiaomiVerify.apk ./XiaomiVerify.apk qulordy 輸入密鑰庫的口令短語: jarsigner: 找不到 qulordy 的證書鏈。qulordy 必須引用包含專用密鑰和相應的公共密鑰證書鏈的有效密鑰庫密鑰條目。
?
2、查看幫助
$jarsigner -h 用法:jarsigner [選項] jar 文件別名(key的別名)jarsigner -verify [選項] jar 文件[-keystore <url>] 密鑰庫位置[-storepass <口令>] 用于密鑰庫完整性的口令[-storetype <類型>] 密鑰庫類型[-keypass <口令>] 專用密鑰的口令(如果不同)[-sigfile <文件>] .SF/.DSA 文件的名稱[-signedjar <文件>] 已簽名的 JAR 文件的名稱[-digestalg <算法>] 摘要算法的名稱[-sigalg <算法>] 簽名算法的名稱[-verify] 驗證已簽名的 JAR 文件[-verbose] 簽名/驗證時輸出詳細信息[-certs] 輸出詳細信息和驗證時顯示證書[-tsa <url>] 時間戳機構的位置[-tsacert <別名>] 時間戳機構的公共密鑰證書[-altsigner <類>] 替代的簽名機制的類名[-altsignerpath <路徑列表>] 替代的簽名機制的位置[-internalsf] 在簽名塊內包含 .SF 文件[-sectionsonly] 不計算整個清單的散列[-protected] 密鑰庫已保護驗證路徑[-providerName <名稱>] 提供者名稱[-providerClass <類> 加密服務提供者的名稱[-providerArg <參數>]] ... 主類文件和構造函數參數
?
?
3、尋找簽名別名:
首先,在用eclipse進行導出的時候是成功的。所以嘗試重新導出應用可以看到別名,如下我的是 'qulordy key' :
?
4、重新簽名:
$jarsigner -verbose -keystore /Volumes/Study/resourcesLib/Qunero-achivements/AndroidApp/QuLordy-signed-key -signedjar ./signed_XiaomiVerify.apk ./XiaomiVerify.apk 'qulordy key' 輸入密鑰庫的口令短語: 正在添加: META-INF/MANIFEST.MF正在添加: META-INF/QULORDY_.SF正在添加: META-INF/QULORDY_.RSA正在簽名: AndroidManifest.xml正在簽名: classes.dex正在添加: res/正在添加: res/drawable/正在簽名: res/drawable/icon.png正在添加: res/layout/正在簽名: res/layout/main.xml正在簽名: resources.arsc
?
在cmd進入jdk的bin目錄,然后執行以下命令:
?
jarsgner -verbose?-sigalg SHA1withRSA -digestalg SHA1?-keystore [keystorePath] -singnedjar [apkOut] [apkln] [alias]
ps:紅色英文不填的話,默認簽名算法采用“SHA256withRSA”,所以會導致360提示:”您的應用簽名算法采用“SHA256withRSA”,在部分4.2一下安卓版本的手機上不能安裝