Android 系统应用 pk8签名文件转jks或keystore教程

一、介绍

        签名文件对于我们在做应用开发中,经常遇到,且签名文件不仅仅是保护应用安全,还会涉及到应用与底层之间的数据共享和API文件等问题。

        在Android中,签名文件同样也存在这个问题。但是android中又区分系统应用和普通应用。系统应用可以通过android:sharedUserId="android.uid.system"同享系统uid,可以获取更高的权限。

所以在做系统应用开发的时候,经常需要使用AOSP的签名。

二、PK8签名转jks或者keystore

pk8只是aosp中的一种,编译时需要的签名文件都在build/make/target/product/security下面。在生成或者转jks的时候,需要借助openssl这个工具。

正常转有两种:window和Linux,通常,我们在window比较多,下面我将介绍window下的转jks的教程

Window环境下的教程

1.安装openssl:

Win32/Win64 OpenSSL Installer for Windows - Shining Light Productions

根据自己的环境,选择对应的即可。安装到C盘,都是默认安装。

2.将platform.pk8和platform.x509.pem从AOSP的build下(build/target/product/security)拷贝一份出来。

需要将Java切到jdk11,

手动切Jdk版本:set path=jdk bin+&path&,例如:set path=F:\android\jdk\bin;&path&

编译步骤:

1.pk8 私钥解密pem格式

openssl pkcs8 -in platform.pk8 -inform DER -outform PEM -out platform.priv.pem -nocrypt

platform.priv.pem:为输出的pem密钥格式

2.私钥通过公钥pem加密pk12, 需要输入两次密码

openssl pkcs12 -export -in platform.x509.pem -inkey platform.priv.pem -out platform.pk12 -name  +别名

3通过java的keytool 工具生成 keystore, 别名需要跟步骤2的一致,同样输入两次密码

3.1jsk:
keytool -importkeystore -destkeystore platform.jks -srckeystore platform.pk12 -srcstoretype PKCS12 -srcstorepass  password-alias +别名

3.2keystore
keytool -importkeystore -destkeystore platform.keystore -srckeystore platform.pk12 -srcstoretype PKCS12 -srcstorepass password-alias +别名

password:生成的密码,

别名:和第二步的别名一样,保持一致

生成后会报一个warm:

uses the MD5withRSA signature algorithm which is considered a security risk and is disabled

进行第四步

4.进行迁移:需要密码,是之前输入的确定密码
 keytool -importkeystore -srckeystore platform.jks -destkeystore platform.jks -deststoretype pkcs12

接下来在bin下面platform.jks是新的秘钥文件,platform.old.jks 是第三步的文件

三、总结

1.需要JDK11,可以通过手动set,也可以改本地的

2.开发工具如果需要签名也需要JDK11

3.需要再Manifest中新增android:sharedUserId="android.uid.system",这样framework获取你的uid进行共享

4.注意:一般这种做法是针对你的app只在一个系统中使用,如果你的app是面向不同的设备,就无法使用,因为不同的设备签名文件不一样,甚至引起安装冲突等情况。这个方法是针对系统应用开发

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/286810.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python数据结构实验 串和数组的实现

一、实验目的 1.熟悉串和数组类型的实现方法,了解简单文字处理的设计方法; 2.熟悉Python语言的字符和把字符串处理的原理和方法; 3.了解矩阵的存储结构,运用Python语言进行矩阵简单运算处理。…

UE像素流公网(Windows、Liunx)部署无需GPU服务器

前言 之前有个前端地图服务项目要改成UE来渲染3D,有需要在云服务器上多实例运行,所以就先研究了Windows版本的像素流云渲染,后来客户的云服务器是Linux版CectOS系统,加上又有了一些后端服务在上面运行了不能重装成Windows,所以就又着手去研究了Linux系统的云渲染。 推流…

【笔记】以论文发表形式通俗理解 TCP/IP模型

【笔记】以论文发表形式通俗理解 TCP/IP模型 前言TCP/IP模型理论通俗理解 前言 在网络基础学习过程中,以前只对TCP/IP理解个字面,网上查一下能知道个字面意思,但是连起来到底是什么意思,还是一知半解的,停留在表面&am…

数据结构基础(三)链表

链表(Linked List)是一种常见的线性数据结构,由一系列称为节点(Node)的元素组成,每个节点包含两部分:数据(Data)和指向下一个节点的引用(Pointer 或者 Link&a…

放弃 Rust 选择 Zig,Xata 团队推出 pgzx —— 计划使用 Zig 开发基于 PG 的分布式数据库

Summary Xata 公司在基于 PostgresSQL 开发自己的分布式数据库,出于 Zig 和 C 语言以及 PostgreSQL 的 API 有更好的互操作性的考虑,他们选择了 Zig 而非当红炸子鸡语言 Rust。他们的博客文章中对 pgzx 进行了介绍。让我们来看下他们对 Zig 和 Rust 语言…

【开发环境搭建篇】Git的安装和配置

作者介绍:本人笔名姑苏老陈,从事JAVA开发工作十多年了,带过大学刚毕业的实习生,也带过技术团队。最近有个朋友的表弟,马上要大学毕业了,想从事JAVA开发工作,但不知道从何处入手。于是&#xff0…

利用Python和IP技术实现智能旅游情报系统

文章目录 引言一、系统架构设计1. 数据采集模块2. 数据处理模块3. 用户界面模块 二、数据获取技术应用三、系统功能展示四、亮数据采集工具介绍五、总结六、号外 引言 随着旅游行业的不断发展,人们对旅游信息的需求也越来越大。为了帮助旅行者更好地规划行程&#…

基于javaweb(springboot+mybatis)宠物医院预约管理系统设计和实现以及论文报告

基于javaweb(springbootmybatis)宠物医院预约管理系统设计和实现以及论文报告 博主介绍:多年java开发经验,专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《1000套》 欢迎…

【超全详解一文搞懂】Scala基础

目录 Scala 01 —— Scala基础一、搭建Scala开发环境安装Scala编译器在IDEA中进行scala编码 二、Scala简介与概述Scala简介Scala概述Scala代码规范 三、理解Scala变量与数据类型Scala的变量与常量Scala和Java变量的区别 Scala的数据类型 四、Scala的程序逻辑1.表达式2.运算符3.…

紫鸾5.0:紫光云新一代敏捷应用开发平台全家桶

曾几何时,“瀑布式”占据了二十世纪软件开发的主流,开发时间往往以年计,一款软件应用动辄几年才能交付。而随着社会生产力的跃升,“瀑布式”已严重跟不上时代的节奏,2001年,“敏捷宣言”的发布,…

AtCoder Regular Contest 143 C - Piles of Pebbles 博弈 , 每个人要拿的是固定的!不够也算不能拿

C - Piles of Pebbles 题意: n堆鹅卵石,第一个人可以拿任意堆x个,第二个人可以拿任意堆y个,第一个人先拿,谁不能拿谁败。 思路: 这个题我一直没读清楚,如文章标题,拿的是固定数目…

MySQL查询约束

1 DML DML 数据操作语句 插入 insert 更新 update 删除 delete 1.1 更新 语法 update 表名 set 字段 值 [, 字段2 值2, ... ] [where 字段 值]; -- [, 字段2 值2, ... ] 是指,可选的,可以同时修改多个列的值 -- [where 字段 值] 是指,可选的,加上是指过滤,只更新符合条…

【C#】C#窗体应用修改窗体的标题和图标

修改窗体顶部的标题和图表,如果不修改则会使用默认的图标,标题默认为Form1,如第一张图,这时候如果想换成和系统有关的内容,如第二张图,可以使用下面的方法进行修改,修改后打开该软件任务栏显示的…

前台处理:CO主数据之成本中心标准层次更改-<OKEON>

一、背景: 前面讲解了成本要素和成本要素组,我们继续介绍成本控制与核算的主数据之成本中心,成本控制分主数据篇和业务篇: 主数据篇主要内容:成本要素、成本中心、订单、作业类型、工作中心; 业务篇主要…

ServletConfig和ServletContext

ServletConfig接口 在Servlet运行期间,需要一些配置信息,这些信息都可以在WebServlet注解的属性中配置。当Tomcat初始化一个Servlet时,会将该Servlet的配置信息封装到一个ServletConfig对象中,通过调用init(ServletConfig config…

【go从入门到精通】for循环控制

作者简介: 高科,先后在 IBM PlatformComputing从事网格计算,淘米网,网易从事游戏服务器开发,拥有丰富的C,go等语言开发经验,mysql,mongo,redis等数据库,设计模…

32.768K晶振X1A000141000300适用于无人驾驶汽车电子设备

科技的发展带动电子元器件的发展电子元器件-“晶振”为现代的科技带来了巨大的贡献,用小小的身体发挥着大大的能量。 近两年无人驾驶汽车热度很高,不少汽车巨头都已入局。但这项技术的难度不小,相信在未来几年里,无人驾驶汽车这项…

Python网络爬虫实战进阶:代理IP池免费送

在Python网络爬虫实战中,代理IP池是一个非常重要的技术环节。代理IP池可以帮助爬虫隐藏真实的IP地址,防止被目标网站封禁,同时可以提高爬虫的爬取效率。本文将详细介绍代理IP池在Python网络爬虫实战中的应用。 文章目录 一、代理IP池的概念二…

蓝桥杯2023真题-幸运数字

目录 进制转换: 思路 代码 题目链接: 0幸运数字 - 蓝桥云课 (lanqiao.cn) 本题就考的进制转换问题,要将十进制5转换成二进制,通过%2,和/2的交替使用即可完成,所得余数就是转换成的二进制各位的值,转换…

[Qt学习笔记]Qt实现自定义控件SwitchButton开关按钮

1、功能介绍 在项目UI中使用较多的打开/关闭的开关按钮,一般都是找图片去做效果,比如说如下的图像来表征打开或关闭。 如果想要控件有打开/关闭的动画效果或比较好的视觉效果,这里就可以使用自定义控件,使用Painter来绘制控件。软…