Android 用 platform.pk8 和 platform.x509.pem 生成 keystore 系统签名文件

devtools/2024/11/28 18:53:16/

一,背景介绍

        最近需要开发一个拥有系统级权限的应用,就了解了下系统应用的签名方式,这里来简单介绍下。

        在进行 Android 应用开发的时候,如果开发的是系统应用,那么就需要有系统签名才能正常运行,而系统应用一般是放到系统代码库中跟随系统一起编译。如果想要用 Android Studio 单独对某个开发的应用进行签名的话,有两种方式可以选择。一种方法是编译完成后使用 signApk.jar 、platform.pk8 和 platform.x509.pem 进行配合签名。第二种方法是把系统的 platform.pk8 和 platform.x509.pem 转换成为我们可以直接使用的 keystore 文件,在编译时自动签名。

        相对而言,第二种方法更为方便,可以全自动化对应用进行签名,方便开发人员测试。
这里介绍下第二种方式的实现方法。

二,生成keystore系统签名文件

2.1 转换pk8文件为pem

        cd到pk8以及x509.pem文件的目录执行如下命令,把platform.pk8生成了.pem 文件,/build/make/target/product/security,

执行脚本:

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

执行如下命令,生成pkcs12格式的密钥文件,生成platform.pk12文件,最后的android是keystore的alias,这里默认为android, platform.pk12是pk12文件名,需要输入两次密码(密码android),

openssl pkcs12 -export -in platform.x509.pem -inkey platform.priv.pem -out platform.pk12 -name android

执行如下命令生成keystore文件,

keytool -importkeystore -destkeystore platform.keystore -srckeystore platform.pk12 -srcstoretype PKCS12 -srcstorepass android -alias android

Android Studio的app/build.gradle中加入:
 

signingConfigs {debug {storeFile file('platform.keystore')storePassword "android"keyAlias "android"keyPassword "android"}release {storeFile file('platform.keystore')storePassword "android"keyAlias "android"keyPassword "android"v1SigningEnabled truev2SigningEnabled true}
}


http://www.ppmy.cn/devtools/137736.html

相关文章

高级 SQL 技巧:提升数据库操作效率与灵活性

SQL(Structured Query Language)是关系型数据库管理系统中用于访问和管理数据库的标准语言。在数据库开发和优化过程中,掌握高级 SQL 技巧是提升开发效率和查询性能的关键。本文将介绍一些高级 SQL 技巧,帮助开发者在复杂查询中提高效率、优化性能,并在实际项目中灵活应对…

【电源专题】怎么理解BUCK变换器电感电流平均值等于输出电流?

在文章【电源专题】BUCK电源SW电压的平均值为什么等于输出电压?中我们讲到去看SW波形的时候,我们可以根据SW波形的平均值去看输出电压。其原因是在稳态时,电感电压平均值为0,所以SW电压的平均值与输出电压相同。 那么对于电感电流平均值等于输出电流,这句话我们怎么去理解…

【GPT】力量训练的底层原理?

详细解读力量训练的每一个底层原理 力量训练之所以有效,是因为它利用了肌肉、神经系统和生物化学反应的基本机制。以下逐一详细解析,并解释相关概念。 1. 应力-恢复-适应理论 概念解析 应力(Stress):指训练带来的负…

【Electron学习笔记(二)】基于Electron开发应用程序

基于Electron开发本地应用程序 基于Electron开发本地应用程序前言正文1、创建 pages 目录2、创建 index.html 文件3 、创建 html.css 文件4 、main.js里引入页面5 、运行 start 命令6 、启用开发者模式7 、解决内容安全策略8、完善窗口行为9、配置自动重启,保存后自…

MCU(一) 时钟详解 —— 以 GD32E103 时钟树结构为例

微控制器 (MCU) 的时钟系统是系统运行的核心,它提供了各模块所需的时钟信号。本文以 GD32E103 系列 MCU 为例,详细讲解其 时钟树结构(Clock Tree)。通过理解时钟源、分配与预分频器设置,可以灵活配置系统时钟以实现高性…

使用OpenCV实现视频背景减除与目标检测

摘要 背景减除是计算机视觉中一种常用的技术,用于从视频流中分离前景对象。本文将介绍如何利用OpenCV库实现视频背景减除,并进一步通过形态学操作和轮廓检测来识别视频中的运动物体。通过一个具体的代码示例,我们将逐步演示整个流程。 1. 引…

利用爬虫爬取网页小说

需求分析 安装requests包 pip install requests目录采集地址: h t t p s : / / w w w . 3 b q g . c c / b o o k / 60417 / https://www.3bqg.cc/book/60417/ https://www.3bqg.cc/book/60417/ 章节采集地址: h t t p s : / / w w w . 3 b q g . c …

详细描述一下Elasticsearch更新和删除文档的过程?

大家好,我是锋哥。今天分享关于【详细描述一下Elasticsearch更新和删除文档的过程?】面试题。希望对大家有帮助; 详细描述一下Elasticsearch更新和删除文档的过程? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在 E…