美文网首页
Android 签名发布 签名脚本

Android 签名发布 签名脚本

作者: 木猫尾巴 | 来源:发表于2016-06-02 10:20 被阅读689次

[TOC]

请注意

签名前,请确认java环境Android环境是否配置正确

生成签名


# 生成签名 别名 [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 如果出现校验时间错误,请找一个能用的tsa服务器

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

**命令执行后有提示输入各种信息,首先是 yourStorepass 然后是签名的各种信息,确认请输入 y, 最后输入别名的aliasesPass **

也就是说一个签名文件,包括 签名密码 别名 别名密码 一个文件 三个字符串

特别的,最好使用时间戳制造签名文件,这样可以在签名到期后,用户仍然可用

签名 APK


# 输入完整信息签名一个应用,注意填写[]中对应的内容

# [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

创建文件 my_sign_apk.sh 内容为


#!/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}

  • 用法

# 给予运行权限

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 内容为


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

@rem please set params with []

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

  • 用法 编辑好对应的参数,拖拽未签名的 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,输入内容

#!/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

保存内容后

chmod +x signApkDebug

配置到环境变量后就可以在任何地方使用命令

signApkDebug [apkFile]

相关文章

  • Android 签名发布 签名脚本

    [TOC] 请注意 签名前,请确认java环境, Android环境是否配置正确 生成签名 此命令试用于 jdk ...

  • Android 签名工具 shell脚本

    Android 签名工具 shell脚本 signApk.sh Shell脚本代码如下:

  • iOS逆向-RSA的使用:代码签名(手动签名、脚本自动签名 《二

    请先看下面?的文章 iOS逆向-RSA的使用-证书签名、代码签名(手动签名、脚本自动签名 《一》) 脚本重签名 ...

  • 应用签名-脚本签名

    签名原理熟悉了,又能够手动对应用签名,那么就可以将手动签名部分写成脚本,通过脚本,一步步实现手动签名过程。脚本签名...

  • iOS IPA重签名入门教程

    方式一、resignIPA重签名 下载脚本resignIPA.py、这个python2脚本、直接签名即可,可重签名...

  • Android签名机制及使用

    1,什么是签名 1.1 签名方案 apk发布者需要使用android 密钥生成工具创建的keystore对APK进...

  • 046 Android签名机制

    彻底搞懂Android签名机制 目录 应用签名的意义 应用签名方案类型 签名方案:v1 签名方案:v2 签名方案:...

  • 苹果签名双向验证原理

    代码签名 代码签名是对可执行文件或者脚本进行数字签名,用来确认软件在签名后未被修改或损坏的措施。 简单的代码签名 ...

  • iOS开发逆向之应用重签名(下)

    本文主要介绍通过shell脚本进行应用重签名 补充知识 在利用shell脚本重签名之前,需要了解以下知识:脚本常用...

  • 签名算法浅析

    前言 虽然我们都知道Android应用发布前要签名,但是至于签名的用处以及原理却知之甚少,所以,我们今天进来解决一...

网友评论

      本文标题:Android 签名发布 签名脚本

      本文链接:https://www.haomeiwen.com/subject/epfkdttx.html