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

看到这里的你应该能区分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.mzph.cn/news/873693.shtml

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

相关文章

【Android】常用基础布局

布局是一种可用于放置很多控件的容器,它可以按照一定的规律调整内部控件的位置,从而编写出精美的界面,布局内不单单可以放控件,也可以嵌套布局,这样可以完成一些复杂的界面,下面就来认识一些常用的布局吧。…

价格较低,功能最强?OpenAI 推出 GPT-4o mini,一个更小、更便宜的人工智能模型

OpenAI美东时间周四推出“GPT-4o mini”,入局“小而精”AI模型竞争,称这款新模型是“功能最强、成本偏低的模型”,计划今后整合图像、视频、音频到这个模型中。 OpenAI表示,GPT-4o mini 相较于 OpenAI 目前最先进的 AI 模型更加便…

MOGONET:患者分类与biomarker识别

为了充分利用组学技术的进步并更全面地了解人类疾病,需要新的计算方法来综合分析多种类型的组学数据。多组学图卷积网络 (MOGONET,Multi-Omics Graph cOnvolutional NETworks)是一种用于生物医学分类的新型多组学整合方法。MOGONET 包含特定组学的学习和…

SpringBoot整合Swagger报错:Failed to start bean ‘documentationPluginsBootstrapper

文章目录 1 问题背景2 问题原因3 修改SpringBoot配置文件 application.properties参考 1 问题背景 Swagger是SpringBoot中常用的API文档工具,在刚接触使用的时候,按照通用的代码进行配置,发现报错了 [main] ERROR org.springframework.boot…

MySQL实现主从复制的步骤,包括配置读写分离的方法。—— 慧哥充电桩开源平台

下载源码 【慧哥开源充电桩平台】 https://liwenhui.blog.csdn.net/article/details/134773779?spm1001.2014.3001.5502 MySQL主从复制是一种常见的数据备份和读写分离策略。下面是实现MySQL主从复制的步骤: 配置主服务器(Master)&#xff1…

【Android】Fragment的静态动态创建以及两种创建方式的生命周期

参考: 33.3-Fragment的创建-静态创建2_哔哩哔哩_bilibili Fragment的创建_从现有代码创建foutran-CSDN博客 【Android】Fragment的基本用法、Fragment和活动间的通信、Fragment的生命周期、动态加载布局的技巧_android fragment-CSDN博客 文章目录 Fragment的静态创…

各种复现,保证质量

代码复现,文献复现,模型复现,算法复现,文章复现,创新点等等,python/matlab/c语言/r语言均可,保证高质量完成,可接急单,不成功不收费!

前端小知识点——按钮之间出现很小的空隙如何规避

前端小知识点——按钮之间出现很小的空隙如何规避 文章介绍问题再现总结 文章介绍 本文主要介绍页面中两个按钮相邻时会出现一点空隙,导致在后续自定义填充的时候出现换行或其它问题,特此记录。 问题再现 这个图片能看到我们给外面的div设置的是300的宽…

C++:左值/右值引用、移动语义/std::move、万能引用/完美转发std::forward 详解

你能学到 左值 与 右值左值引用 与 右值引用 基本用法与作用拷贝构造函数 与 移动构造函数移动语义 与 std::move万能引用 与 引用折叠完美转发:std::forward 前言 本文代码片段中变量命名规则如下: 小写字母:一般类型的变量(非…

Linux_线程的使用

目录 1、线程与进程的关系 2、线程的优缺点 3、创建线程 4、查看启动的线程 5、验证线程是共享地址空间的 6、pthread_create的重要形参 6.1 线程id 6.2 线程实参 7、线程等待 8、线程退出 9、线程取消 10、线程tcb 10.1 线程栈 11、创建多线程 12、__th…

VS2019安装MFC组件

VS2019支持的MFC版本是mfc140 ~ mfc142版本,它兼容VS2015、VS2017之前的老版本程序。 一、MFC的历史版本 MFC的历史版本如下: IDE发布时间工具集版本MSC_VERMSVCMFC版本dllVisual C6.01998V601200MSVC6.06.0mfc42.dll、mfcce400.dllVisual Studio 2002…

如何设计数据中心100G网络光纤布线

随着全球企业对带宽的需求呈指数级增长,数据中心需要升级以增强其计算、存储和网络能力。数据中心从10G/25G向100G迁移成为必然趋势。随着网络升级,数据中心的光纤布线系统也需要随之优化。本文将指导您如何设计数据中心100G网络光纤布线。 100G以太网的…

python-快速上手爬虫

目录 前言 爬虫需谨慎,切勿从入门到入狱! 一点小小的准备工作 直接上手爬取网页 1.获取UA伪装 2.获取url 3.发送请求 4.获取数据并保存 总结 前言 爬虫需谨慎,切勿从入门到入狱! 一点小小的准备工作 对pip进行换源&#xf…

基于微信小程序图书馆座位预约系统设计与实现

链接: 文档和工程文件地址: ** 2、未完待续:请到目标位置下载 ** 链接: 文档和工程文件地址:

分布式搜索之Elasticsearch入门

Elasticsearch 是什么 Elasticsearch 是一个分布式、RESTful 风格的搜索和数据分析引擎,能够解决不断涌现出的各种用例。作为 Elastic Stack 的核心,它集中存储您的数据,帮助您发现意料之中以及意料之外的情况。 Elastic Stack 又是什么呢&a…

排序系列 之 快速排序

!!!排序仅针对于数组哦本次排序是按照升序来的哦代码后边有图解哦 介绍 快速排序英文名为Quick Sort 基本思路 快速排序采用的是分治思想,即在一个无序的序列中选取一个任意的基准元素base,利用base将待排序的序列分…

【吊打面试官系列-ZooKeeper面试题】分布式集群中为什么会有 Master?

大家好,我是锋哥。今天分享关于 【分布式集群中为什么会有 Master?】面试题,希望对大家有帮助; 分布式集群中为什么会有 Master? 在分布式环境中,有些业务逻辑只需要集群中的某一台机器进行执行&#xff0c…

Leetcode1305.两颗二叉搜索树中的所有元素

1.题目要求: 给你 root1 和 root2 这两棵二叉搜索树。请你返回一个列表,其中包含 两棵树 中的所有整数并按 升序 排序。.2.思路: 我这个方法采用的是设立一个数组,然后用前序遍历把值存入数组中,然后用qsort给它排序 3.代码: /*** Definiti…

[米联客-安路飞龙DR1-FPSOC] FPGA基础篇连载-21 VTC视频时序控制器设计

软件版本:Anlogic -TD5.9.1-DR1_ES1.1 操作系统:WIN10 64bit 硬件平台:适用安路(Anlogic)FPGA 实验平台:米联客-MLK-L1-CZ06-DR1M90G开发板 板卡获取平台:https://milianke.tmall.com/ 登录“米联客”FPGA社区 ht…

蚂蚁集团推出EchoMimic:能通过音频和面部标志生成逼真的肖像动画视频

蚂蚁集团最近推出了一项名为EchoMimic的新技术。能通过音频和面部标志生成逼真的肖像动画视频,让你的声音和面部动作被完美复制到视频中,效果自然如照镜子。 EchoMimic不仅可以单独使用音频或面部标志点生成肖像视频,也可以将两者结合&#…