Android 簽名發(fā)布 簽名腳本

[TOC]

請注意

簽名前,請確認java環(huán)境Android環(huán)境是否配置正確

生成簽名


# 生成簽名 別名 [myKey] 有效期 50年, 算法 RSA 文件名 [myKey.keystore]

keytool -genkey -alias myKey -keyalg RSA -validity 17820 -keystore myKey.keystore

# 提示,其中國家代碼 中國-CN

此命令試用于 jdk 1.7 及 1.7以下,如果高于請使用如下命令


# 1.8以后的jdk要求時間校準 加入 -tsa http://timestamp.digicert.com 如果出現(xiàn)校驗時間錯誤,請找一個能用的tsa服務(wù)器

keytool -tsa http://timestamp.digicert.com -genkey -alias myKey -keyalg RSA -validity 17820 -keystore myKey.keystore

**命令執(zhí)行后有提示輸入各種信息,首先是 yourStorepass 然后是簽名的各種信息,確認請輸入 y, 最后輸入別名的aliasesPass **

也就是說一個簽名文件,包括 簽名密碼 別名 別名密碼 一個文件 三個字符串

特別的,最好使用時間戳制造簽名文件,這樣可以在簽名到期后,用戶仍然可用

簽名 APK


# 輸入完整信息簽名一個應(yīng)用,注意填寫[]中對應(yīng)的內(nèi)容

# [yourStorepass] 簽名文件密碼 [aliasesPass] 別名密碼 [forSignAPKPath] 要簽名的apk路徑  [aliases] 別名

jarsigner -verbose -keystore myKey.keystore -storepass [yourStorepass] -keypass [aliasesPass] [forSignAPKPath] [aliases]

# 查看幫助

jarsingner -help

校驗簽名


# 查看一個路徑為 [verifyApkPath] 的APK 是否簽名

jarsigner -verify [verifyApkPath]

# 通過一個路徑為 [keystorePath] 的簽名文件,校驗一個 路徑為 [verifyApkPath] 的apk

jarsigner -verbose -verify -keystore [keystorePath] -certs [verifyApkPath]

查看簽名文件信息


# 查看一個路徑為 [keystorePath] 的簽名文件的信息,需要簽名的庫密碼

keytool -list -keystore [keystorePath]

簽名腳本

OSX or Linux

創(chuàng)建文件 my_sign_apk.sh 內(nèi)容為


#!/bin/bash

# setting default key path here

# local OPTIND

# jarsigner -verbose -verify -keystore ${keyPath} -certs ${packagePath}

DEFAULT_KEY_PATH=/Users/sinlov/opt/myShell/myKey.keystore

DEFAULT_STORE_PASS="myPass"

DEFAULT_ALIASES="myAliases"

DEFAULT_KEY_PASS="keyPass"

DEFAULT_DIGESTALG=SHA1

DEFAULT_SIGALG=MD5withRSA



sigalg=${DEFAULT_SIGALG}

digestalg=${DEFAULT_DIGESTALG}

keyPath=${DEFAULT_KEY_PATH}

storepass=${DEFAULT_STORE_PASS}

keypass=${DEFAULT_KEY_PASS}

aliases=${DEFAULT_ALIASES}

packagePath=



IS_VERIFY=false



if [ ! -n "$1" ]; then

    echo "unkonw path, please use apk path"

    exit 1

else

    while getopts "p:k:h:" arg #after param has ":" need option

    do

        case $arg in

            p)

                echo "Package path: $OPTARG"

                packagePath=$OPTARG

                ;;

            k)

                echo "Key Path: $OPTARG"

                keyPath=$OPTARG

                ;;

            h)

                echo "use -p [packagePath] -k [keyPath] -h Show help"

                exit 1

                ;;

            ?)  # other param?

                echo "unkonw argument, please use -p [packagePath] -k [keyPath]"

                exit 1

                ;;

        esac

    done

fi



#echo "sigalg: ${sigalg}"

#echo "digestalg: ${digestalg}"

#echo "keyPath: ${keyPath}"

#echo "storepass: ${storepass}"

#echo "aliases: ${aliases}"

#echo "keypass: ${keypass}"

#echo "packagePath: ${packagePath}"

jarsigner -verbose -digestalg ${digestalg} -sigalg ${sigalg} -keystore ${keyPath} -storepass ${storepass} -keypass ${keypass} ${packagePath} ${aliases}

  • 用法

# 給予運行權(quán)限

chmod +x my_sign_apk.sh

# 查看幫助

./my_sign_apk.sh -h

# 快速簽名

./my_sign_apk.sh -p [apkPath]

# 指定簽名文件簽名

./my_sign_apk.sh -k [keyPath] -p [apkPath]

Windows

新建文件 sign.bat 內(nèi)容為


@echo.============= Start Sign APK=============

@rem please set params with []

jarsigner -verbose -digestalg SHA1 -sigalg MD5withRSA -keystore [YourKeyFullPath] -storepass [storepass] -keypass [keyPass] "%~nx1" [aliases]
pause

  • 用法 編輯好對應(yīng)的參數(shù),拖拽未簽名的 apk 到文件 sign.bat圖標即可

Debug簽名簽名APK

Windows debug簽名腳本

jarsigner -verbose -digestalg SHA1 -sigalg MD5withRSA -keystore ~/.android/debug.keystore -storepass "android" -keypass "android" "%~nx1" androiddebugkey

請修改 ~/.android/debug.keystore 改為你用戶目錄下面的 .android\debug.keystore絕對路徑

保存成signApkDebug.bat 拖拽apk到這個腳本即可

Mac/Linux debug 簽名腳本

新建文件 signApkDebug,輸入內(nèi)容

#!/bin/bash
if [ ! -n "$1" ]; then
 echo "unkonw path, please use apk path"
 exit 1
else
 jarsigner -verbose -digestalg SHA1 -sigalg MD5withRSA -keystore ~/.android/debug.keystore -storepass "android" -keypass "android" $1 "androiddebugkey"
fi

保存內(nèi)容后

chmod +x signApkDebug

配置到環(huán)境變量后就可以在任何地方使用命令

signApkDebug [apkFile]
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,716評論 25 709
  • 1.介紹 如果你正在查閱build.gradle文件的所有可選項,請點擊這里進行查閱:DSL參考 1.1新構(gòu)建系統(tǒng)...
    Chuckiefan閱讀 12,355評論 8 72
  • 此篇文章將介紹: 簽名文件的生成、apk再次簽名、自簽名證書的生成; 引言Android開發(fā),涉及到開發(fā)和正式版...
    3Q竹林閱讀 1,067評論 0 1
  • 參考什么是 Android 簽名機制,Bluebox Security 發(fā)現(xiàn)的漏洞有何威脅? Android應(yīng)用程...
    合肥黑閱讀 2,142評論 1 16
  • 純屬手工制作!
    和果閱讀 322評論 1 3

友情鏈接更多精彩內(nèi)容