安卓系统签名的制作与使用(SignApk.jar)踩坑记录

news2024/9/21 2:49:53

看到这里的你应该能区分apk签名跟系统签名吧,如果无法区分的请看下面链接

android 应用的证书签名跟系统签名

看过上面的文章应该知道系统签名需要的文件清单大概有哪些

前两个是编译安卓系统时在build目录下,详细目录为 /build/target/product/security

每组签名用途不同,进一步解释理解就是:

platform 签名
用途:platform签名主要用于系统核心应用,这些应用直接与Android操作系统紧密集成,并执行关键的系统级功能。
特性:
在AndroidManifest.xml中通过设置android:sharedUserId="android.uid.system"表明该应用属于系统进程组,拥有更高的权限。
使用platform签名的应用程序通常运行在system UID下,可以直接访问受保护的API和资源,并且可以和其他system用户ID下的应用共享数据。
由于这类应用的安全敏感性,它们必须使用由设备制造商或系统开发者持有的私钥进行签名。
media 签名
用途:media签名主要应用于与媒体处理和下载服务相关的系统组件,比如默认的媒体播放器、下载管理器等。
特性:
同样需要在manifest文件中声明特定的共享用户ID,即android:sharedUserId="android.media"。
这类应用同样享有较高的权限,允许它们执行与多媒体处理相关的核心操作,例如读取和写入多媒体内容,以及管理网络下载任务等。
media签名应用虽然不如platform签名应用权限高,但仍然具有超出普通第三方应用的特殊权限。
shared 签名
用途:shared签名是用于那些需要与其他特定系统进程(如home屏幕或者联系人应用)之间共享数据和资源的应用。
特性:
设置android:sharedUserId="android.uid.shared"后,应用会以同一个用户ID运行,从而能够互相访问彼此的数据目录。
shared签名的应用一般不涉及最底层的系统服务,而是针对系统内部具有一定协作关系的服务或者组件提供数据共享能力。
testkey 签名
用途:testkey是Android编译系统中的默认签名密钥,当一个APK没有明确指定LOCAL_CERTIFICATE变量时,系统会使用testkey对其进行签名。由于testkey是公开且容易获取的,因此它并不适用于正式发布或安全要求高的应用。

普通的安卓应用开发用户可从定制系统的厂商获取该文件

如果使用的设备厂商没有对这个改动过,则使用google给的这两个就行了;如果厂商做过处理,需要向厂商索取该文件

第三个文件signapk.jar 可从安卓工具箱中下载

安卓工具下载箱

安卓工具箱: http://www.top139.com/AndroidTools.html

直接点击工具下载即可,解压后可得如下四个文件,我们需要的signapk.jar也在其中

新建一个signApk的文件夹,这个文件夹可以使任意路径,后面会配置java环境

将你进行过证书签名的apk也放到signApk目录下,此时目录下有如下文件

安装JDK

各版本jdk下载

java8 第三方下载

这个java8安装不会自动配置环境变量了,得自己手动配置

【此电脑】上,右键选择【属性】--> 【高级系统设置】-->【环境变量】 

java8如果默认路径安装的花应该在C:\Program Files (x86)\Java\jre-1.8路径下

系统变量里面的【Path】变量,进行【编辑】,编辑时新增一行记录,填入的值为:%JAVA_HOME%\bin,然后点击【确定】 

再新建一条全路径 C:\Program Files (x86)\Java\jre-1.8\bin

新建一个cmd窗口,执行java -version

直接在搜索框输入cmd回车

输入java -version

以上表示java环境配置成功

 如果java环境有问题的可以参考这个老哥的博客

Windows系统安装Java环境

如上表示java环境变量配好了(高版本自动配置)

进行系统签名

进入上面的signApk目录

在上面的文件路径中输入cmd 回车打开命令行

输入如下命令:

java -jar signapk.jar platform.x509.pem platform.pk8 app-release.apk app_signed.apk

命令里面需要注意的就是两个红色名字,第一个名字是你要签名的apk,第二个名字是签名后的apk

注意:读过我开篇链接的应该主要到需要在清单文件中加上

我这个是android studio版本太高,使用的sdk版本太高导致的,直接点击图中红框部分即可,不予理会

这样就好了

查了下,sdk版本有点高

执行命令

如果提示这个错误标识jdk版本过高

如果你正在使用的是 Java 9 或更高版本,sun.misc.BASE64Encoder 和 sun.misc.BASE64Decoder 已经不再是公共 API 的一部分,因此应该避免使用这些内部 API。

先把原来安装的jdk卸载再安装java8

再次执行命令

java -jar signapk.jar platform.x509.pem platform.pk8 app-release.apk app_signed.apk

以上表示成功生成了系统签名文件

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

IP转接服务的重要性及其应用

在现今互联网高度发达的时代,IP转接服务的重要性日益凸显。对于家庭和企业而言,它不仅是连接互联网的桥梁,更是确保网络稳定、高效运行的关键。本文将深入探讨IP转接服务的核心意义及其在互联网世界中的应用。 IP转接服务,简而言之…

大语言模型-文本向量模型评估基准 MTEB

MTEB(Massive Text Embedding Benchmark) 涵盖112种语言的58个数据集,包含如下8种任务。 1、双语文本挖掘(Bitext Mining) 任务目标: 在双语语料库中识别语义等价的句子对。 任务描述: 输入…

Spring Cloud LoadBalanced

负载均衡(Load Balance,简称 LB) 是⾼并发, ⾼可⽤系统必不可少的关键组件. 当服务流量增⼤时, 通常会采⽤增加机器的⽅式进⾏扩容, 负载均衡就是⽤来在多个机器或者其他资源中, 按照⼀定的规则合理分配负载. 负载均衡的⼀些实现 就像是eureka中对请求进行轮询的…

【工具使用】EMACS的verilog_mode脚本

#工作记录# 俗话说不会玩连连看的工程师不是一个好的SoC工程师。 在做集成工作的时候,集成连线估计是一件比较繁琐且容易出错的事情,连线类型定义出错、位宽问题、连线众多等等问题,此时使用由Veripool带来的verilog_mode简直是令人神清气爽…

Linux云计算 |【第一阶段】ENGINEER-DAY2

主要内容: 磁盘空间管理fdisk、parted工具、开机自动挂载、文件系统、交换空间 KVM虚拟化 实操前骤: 1)添加一块硬盘(磁盘),需要关机才能进行操作,点击左下角【添加硬件】 2)选择2…

Qt:26.Qt项目:贪吃蛇游戏

一、项目功能演示: 开始界面可以点击进入游戏。 点击进入游戏之后,切换到选项界面,该界面可以选择游戏难度,回退,以及查询最近一次游戏得分。 游戏具体界面如下。贴图啥的可以自己换,本人审美不咋行&#x…

SPA Fiori开发实战课程(一)

前言 由于工作需要,对Fiori的开发有了一些具体实践,所以做一些记录和总结。 准备工作 1. 对前端有一定的了解,熟悉Node.js,Vue等前端服务器和基础框架。 2. 后端使用ABAP系统。 3. 使用Visual Studio Code进行开发。 工程搭建 打…

TIMO后台管理系统:基于SpringBoot2.0的模块化快速开发平台

摘要 随着软件技术的快速发展,后台管理系统的构建成为企业级应用的重要组成部分。本文旨在介绍TIMO后台管理系统的设计与实现,该系统基于Spring Boot 2.0、Spring Data JPA、Thymeleaf和Shiro等主流技术构建,采用模块化设计以简化开发和维护…

第2章 矩阵

A 乘以此列向量,1的位置依次往下,所以A的列向量全为0 B C、D 取BE 要统一

设计模式——模版方法和策略模式

前言 作为一名资深CV工程师,学会为自己减少工作量乃重中之重。但只是一味地CV,只会因为劣质代码而让自己的工作量加倍,为了将来不被繁重的维护工作而打扰自己的休息日,为了更好的节能,学习设计模式,刻不容缓…

goLang 通过 Select + Channels 实现定时任务与调度

time 包 在与 channel 结合时提供了很多有用的功能,其中 time.Ticker 结构体能够处理定时事件,它会定期在指定 channel 上发送时间值。在这篇文章中,我们深入探讨了如何使用 Go 语言中的 time 包与 channel 结合来处理定时事件和任务调度。通过 time.Ticker 结构体的周期性触…

MySQL(终章)视图, 用户管理, C连接MySQL.

目录 1.视图; 2.用户管理; 1.视图: 1.1 概念和基本操作: 视图本质就是表结构, 虚拟表. 视图和基表数据的改变都会相互影响. 创建视图语法: create view 视图名 as select语句; 修改视图: update set ; 删除视图: drop view 视图名; 1. 2 视图使用规则: …

【java】力扣 跳跃游戏

文章目录 题目链接题目描述代码1.动态规划2.贪心 题目链接 55.跳跃游戏 题目描述 代码 1.动态规划 1.1 dp数组的含义 dp[i]:从[0,i]的任意一点处出发,你最大可以跳跃到的位置。 例如nums[2,3,1,1,4]中: dp[0]2 dp[1]4 dp[2]4 dp[3]4 dp[4]8&#xff…

PACS-医学影像信息管理系统,全影像科室PACS源码,内置包括MPR、CMPR、VR等三维处理功能

PACS系统可以覆盖医院现有放射、CT、MR、核医学、超声、内镜、病理、心电等绝大部分DICOM和非DICOM检查设备,支持从科室级、全院机、集团医院级乃至到区域PACS的平滑扩展,能够与医院HIS、集成平台的有效集成和融合,帮助医院实现了全院医学影像…

大数据-38 Redis 高并发下的分布式缓存 Redis简介 缓存场景 读写模式 旁路模式 穿透模式 缓存模式 基本概念等

点一下关注吧!!!非常感谢!!持续更新!!! 目前已经更新到了: HadoopHDFSMapReduceHiveFlumeSqoopZookeeperHBaseRedis 章节内容 上一节我们完成了: HBase …

更改若依框架的包名

使用KIT更改 官网:http://www.goldpankit.com 具体步骤 1. 打开KIT官网,选择Ruoyi-Vue框架,如下图所示 2. 点击构建框架按钮,如下图所示 3. 填写框架参数并点击立即构建 4. 下载ZIP并解压即可,构建后内容如下 这样…

《Exploring Aligned Complementary Image Pair for Blind Motion Deblurring》

这篇论文的标题《Exploring Aligned Complementary Image Pair for Blind Motion Deblurring》可以翻译为《探索对齐的互补图像对用于盲运动去模糊》。从标题可以推断,论文的焦点在于开发一种算法或技术,利用成对的图像来解决运动模糊问题,特别是在不知道模糊核(即造成模糊…

基于牛顿-拉夫逊优化算法(Newton-Raphson-based optimizer, NBRO)的无人机三维路径规划

牛顿-拉夫逊优化算法(Newton-Raphson-based optimizer, NBRO)是一种新型的元启发式算法(智能优化算法),该成果由Sowmya等人于2024年2月发表在中科院2区Top SCI期刊《Engineering Applications of Artificial Intelligence》上。 1、算法原理…

(vue)Vue读取public中的json文件,打包后只需更改包文件

(vue)Vue读取public中的json文件,打包后只需更改包文件 背景:增加账号需求。原本是在页面,每次都需技术人员添加再打包部署,现在放到json里,以后直接服务器改json就行。 旧版: let userArr [{username:aaa,password:…

系统架构设计师教程 第3章 信息系统基础知识-3.7 企业资源规划(ERP)-解读

系统架构设计师教程 第3章 信息系统基础知识-3.7 企业资源规划(ERP) 3.7.1 企业资源规划的概念3.7.2 企业资源规划的结构3.7.2.1 生产预测3.7.2.2 销售管理(计划)3.7.2.3 经营计划(生产计划大纲)3.7.2.4 …