Android源码创建生成jks签名文件脚本

用法

将脚本置于源码目录下,最好lunch一下你的工程
生成的签名文件为工程名称_AN_版本号

chmod +x ./auto_build_signature.sh
chmod 777  ./auto_build_signature.sh

./auto_build_signature.sh Android_studio的STORE_NAME  Android_studio的Alias别名  Android_studio的密钥密码

脚本内容

#!/bin/bash


KEY_STORED_PASSWORD=$1
KEY_ALIAS=$2
KEY_PASSWORD=$3
DIR_NAME="createSignature"
source build/envsetup.sh > /dev/null
PRODUCT_NAME=`get_build_var TARGET_PRODUCT`
VERSION_NAME=`get_build_var PLATFORM_VERSION`
LOG_TAG="\033[34m[Tuliyuan:AutoBuildSignature]\033[0m"
LOG_END="\033[0m"
FILE_NAME="${PRODUCT_NAME}_AN_${PLATFORM_VERSION}.jks"
do_main(){
 if [ "$KEY_STORED_PASSWORD" = "" ] || [ "$KEY_STORED_PASSWORD" = "-h" ] || [ "$KEY_STORED_PASSWORD" = "--h" ]
    then 
	#echo -e "${LOG_TAG}\033[31mYour should add correct params .For Exapmle ${LOG_END}"
	echo -e "${LOG_TAG}\033[31m参数错误,使用示例如下${LOG_END}"
	#echo -e "${LOG_TAG}\033[31m./auto_build_signature.sh key_stored_password key_alias key_password ${LOG_END}"
	echo -e "${LOG_TAG}\033[31m./auto_build_signature.sh Android studio的STORE_NAME  Android studio的Alias别名  Android studio的密钥密码 ${LOG_END}"
	return;
 fi
 if [ "$PRODUCT_NAME" == "" ] || [ "$PLATFORM_VERSION" = "" ]
    then 
	FILE_NAME="platform.jks"
 fi
 if [ "$KEY_ALIAS" = "" ] ;then
      #echo -e "${LOG_TAG}\033[31mOnly one extra param .use $1 to set key alias and key password ${LOG_END}"
	  echo -e "${LOG_TAG}\033[31m当前只传递了Android studio的STORE_NAME,使用\033[33m$1${LOG_END}来替代Android studio的Alias别名/Android studio的密钥密码${LOG_END}"
 	KEY_ALIAS="$KEY_STORED_PASSWORD"
 	KEY_PASSWORD="$KEY_STORED_PASSWORD"
 fi
  if [ "$KEY_PASSWORD" = "" ] ;then
      #echo -e "${LOG_TAG}\033[31mOnly two extra param .use $1 to set key password  ${LOG_END}"
	  echo -e "${LOG_TAG}\033[31m当前只传递了Android studio的STORE_NAME和Android studio的Alias别名,使用\033[33m$1${LOG_END}来替代Android studio的密钥密码${LOG_END}"
        KEY_PASSWORD=$KEY_STORED_PASSWORD
 fi

 #echo -e "${LOG_TAG}Creatingkey \033[33mstored password is $KEY_STORED_PASSWORD${LOG_END}"
 echo -e "${LOG_TAG}创建签名文件的\033[33m存储密码为$KEY_STORED_PASSWORD${LOG_END}"
 #echo -e "${LOG_TAG}Creatingkey \033[36malias is $KEY_ALIAS${LOG_END}"
 echo -e "${LOG_TAG}创建签名文件的\033[36m别名 $KEY_ALIAS${LOG_END}"
 #echo -e "${LOG_TAG}Creatingkey \033[35mpassword is $KEY_PASSWORD${LOG_END}"
 echo -e "${LOG_TAG}创建签名文件的\033[35m签名密码 $KEY_PASSWORD${LOG_END}"

 mkdir $DIR_NAME
 cp build/target/product/security/platform.pk8 ./$DIR_NAME
 cp build/target/product/security/platform.x509.pem ./$DIR_NAME
 cp prebuilts/sdk/tools/lib/signapk.jar ./$DIR_NAME
 cp prebuilts/sdk/tools/linux/lib64/libconscrypt_openjdk_jni.so ./$DIR_NAME
 cd ./$DIR_NAME
 openssl pkcs8 -inform DER -nocrypt -in platform.pk8 -out platform.pem
 openssl pkcs12 -export -in platform.x509.pem -out platform.p12 -inkey platform.pem -password pass:$KEY_STORED_PASSWORD -name $KEY_ALIAS
 keytool -importkeystore -deststorepass $KEY_PASSWORD -destkeystore ./$FILE_NAME -srckeystore ./platform.p12 -srcstoretype PKCS12 -srcstorepass $KEY_STORED_PASSWORD

 mv $FILE_NAME ../$FILE_NAME
 cd ..

 if  [ -f "$FILE_NAME" ] ;then 
	#echo -e "\r\n\r\n\r\n${LOG_TAG}\033[32mFile Created Success !!! ${LOG_END}"
	echo -e "\r\n\r\n\r\n${LOG_TAG}\033[32m签名文件创建成功 !!! ${LOG_END}"
 else
    #echo -e "${LOG_TAG}\033[31mFile Created Faild. Please Recheck !!! ${LOG_END}"
    echo -e "${LOG_TAG}\033[31m签名文件创建失败,请确认是否在源码根目录以及参数是否正常 !!! ${LOG_END}"
	return;
 fi
 rm -rf $DIR_NAME
}
do_main $1 $2 $3

错误以及解决办法

1.keytool error: java.io.IOException: keystore password was incorrect

检查jdk版本,建议使用1.8

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值