当前位置: 首页 > news >正文

Android开发 系统签名jks制作和问题汇总

1 前提和介绍

前提:需要有Android相对应版本的security文件夹,对应文件需要platform.pk8、platform.x509.pem
介绍如下

platform.pk8	私钥,原始的 DER 格式,Android 默认使用 .pk8 保存    
platform.x509.pem	公钥证书,PEM 格式,Android 默认的签名证书 
platform.pem	中间生成的私钥(从.pk8 转换为 PEM 格式) 
platform.p12	中间生成的 PKCS12 密钥库,包含私钥和证书    
platform.jks	最终生成的 JKS 密钥库

2 主要命令行

主要命令行只有三句

1
openssl pkcs8 -inform DER -nocrypt -in platform.pk8 -out platform.pem2 (这里2的代码可以都做一下尝试)
openssl pkcs12 -export -in platform.x509.pem -out platform.p12 -inkey platform.pem -password pass:111111 -name key0openssl pkcs12 -export -in platform.x509.pem -inkey platform.pem -out platform.p12 -passout pass:111111 -name key0keytool -importkeystore -deststorepass 111111 -destkeystore ./platform.jks -deststoretype JKS -srckeystore ./platform.p12 -srcstoretype PKCS12 -srcstorepass 1111113
该后缀为keystore
keytool -importkeystore -deststorepass 111111 -destkeystore ./platform.keystore -srckeystore ./platform.p12 -srcstoretype PKCS12 -srcstorepass 111111
该后缀为jks 可直接用于as签名
keytool -importkeystore -deststorepass 111111 -destkeystore ./platform.jks -deststoretype JKS -srckeystore ./platform.p12 -srcstoretype PKCS12 -srcstorepass 111111

3 签名过程中主要遇到的问题

1 最后生成jks文件时报错密码错误 java.io.IOException: keystore password was incorrect

加-v查看了详细报错参数

keytool -importkeystore -v -deststorepass 111111 -destkeystore platform.keystore -srckeystore platform.p12 -srcstoretype PKCS12 -srcstorepass 111111

具体如下
java.security.UnrecoverableKeyException: failed to decrypt safe contents entry: javax.crypto.BadPaddingException: Given final block not properly padded. Such issues can arise if a bad key is used during decryption.

解决方案:
切换高版本jdk,我用jdk8编译Android7签名失败,换成jdk11可以成功签名,但签名Android9又失败,但换成jdk17成功,具体原因目前也不是特别清楚,猜测是兼容性。

写得很好的一个文章
从生成keystore到完成Android应用签名的全过程指南
https://blog.csdn.net/weixin_35006125/article/details/142892554

http://www.xdnf.cn/news/926191.html

相关文章:

  • 实现简易动效
  • 杭州瑞盟 MS35774/MS35774A 低噪声256细分微步进电机驱动,用于空调风门电机驱动,香薰电机驱动
  • ViiTor实时翻译 2.4.2 | 完全免费的同声传译软件 实测识别率非常高 可以识别视频生成字幕
  • 看看不同主干的参数量是多少
  • 【Linux】SSH:免密登录
  • Egg.js框架的基本介绍与用法,以及如何连接数据库并对数据库进行增删改查
  • Go 语言中的 make 函数详解
  • AI推理服务的高可用架构设计
  • 第9篇:数据库中间件的容错机制与高可用架构设计
  • 负载均衡--堆/优先队列模拟
  • 抗辐照MCU在卫星载荷电机控制器中的实践探索
  • SDC命令详解:使用set_propagated_clock命令进行约束
  • JDK21深度解密 Day 14:生产环境监控与排错
  • 什么是hint热点行更新呢?
  • matlab 2024a ​工具箱Aerospsce Toolbox报错​
  • 【Linux】Linux进程间通讯-共享内存
  • curl 如何发送一个邮件 ?
  • selenium自动化测试学习心得1
  • 阿里巴巴ROLL:大规模强化学习优化的高效易用解决方案
  • CDTJDT是开发SAST工具的有力引擎
  • Java 并发编程系列(上篇):多线程深入解析
  • Java Map完全指南:从基础到高级应用
  • Cell-o1:强化学习训练LLM解决单细胞推理问题
  • 基于Ubuntu22.04安装SVN服务器之仓库迁移
  • 基于IDA的bindiff使用
  • Java并发编程之并发编程的调试与测试
  • 【MLLM】字节BAGEL多模态理解和生成统一模型
  • 数字通信复习
  • RAG检索系统的两大核心利器——Embedding模型和Rerank模型
  • ELF文件,静态链接(Linux)