Android 签名、空包签名 、jarsigner、apksigner

news/2024/9/18 16:05:35/ 标签: android

jarsigner是JDK提供的针对jar包签名的通用工具,

位于JDK/bin/jarsigner.exe

apksigner是Google官方提供的针对Android apk签名及验证的专用工具,

位于Android SDK/build-tools/SDK版本/apksigner.bat

jarsigner:

jarsigner签名空包执行的命令:

jarsigner -verbose -keystore [your signature storage path] -signedjar [signed filename] [unsigned filename] [alias] 

[your signature storage path]-keystore文件路径

[signed filename]-签名以后的apk

[unsigned filename]-要签名的apk

[alias] -keystore中的别名!


为了防止环境变量配置导致的问题,请将待签名的空包“xx.apk”和待签名的私钥keystore拷贝到JDK下的bin目录下。

androidStudio查看配置的jdk路径:

把jks与空包同时放入JDK下的bin目录下。

jks的别名用自己的,这里用xxx代替。

cmd进入到JDK下的bin目录下,执行命令:
jarsigner -verbose -keystore xxx.jks -signedjar OppoSignVerify_signed.apk OppoSignVerify.apk xxx

输入密码签名完成

JDK下的bin目录下生成已签名的apk包。

apksigner:

apksigner签名空包执行的命令:

apksigner sign --ks [your private key storage path] --ks-key-alias [your key alias] --out [path to signed file] [path to unsigned file]

[your private key storage path]-jks文件路径

[your key alias]-别名

[path to signed file]-签名以后的apk输出路径

[path to unsigned file]-要签名的apk路径

androidStudio查看配置的sdk路径:

cmd进入到SDK\build-tools\对应版本 的目录下,执行命令:(C:\Users\guowe\Desktop\signDir是自己未签名和jks所在的路径)
apksigner sign --ks C:\Users\guowe\Desktop\signDir\xxx.jks  --ks-key-alias xxx --out C:\Users\guowe\Desktop\signDir\signed.apk C:\Users\guowe\Desktop\signDir\OppoSignVerify.apk

Keystore password for signer #1: (输入签名密码)后回车,签名完成

目录下生成已签名的apk包

同时会生成.idsig 文件。

APK 签名方案 v4 是在 Android 11 中引入的。Android 11 将签名存储在单独的 [apk name].apk.idsig 文件中。
具体看:
Android 应用签署
Android不同的签名方式讲解

apksigner签名过程中,出现的话

按照提示在命令前加上.\可以执行成功。
.\apksigner sign --ks.....

--------------------------------------------------------------------------------------------

用apksigner打小米签名空包遇到的问题:

https://global.developer.mi.com/document?doc=appManagement.emptyPackageSignatureGuide

下载了小米的空包:com.xiaomi.getapps.signature.verification.apk
按照示例命令签名:
apksigner sign --ks C:\Users\YourName\keystore-test.jks  --ks-key-alias keystore-test --out C:\Users\YourName\signed.apk C:\Users\YourName\com.xiaomi.getapps.signature.verification.apk

输出的apk也按照signed.apk 这样命名。但把签完名的apk提交时报错:

解决方式:
把签完名的apk也用com.xiaomi.getapps.signature.verification.apk来命名。。。。。。

也就是:

apksigner sign --ks C:\Users\YourName\keystore-test.jks  --ks-key-alias keystore-test --out C:\Users\YourName\com.xiaomi.getapps.signature.verification.apk C:\Users\YourName\com.xiaomi.getapps.signature.verification.apk

把最后生成的com.xiaomi.getapps.signature.verification.apk 再提交就验证通过了。。。。。。。。。。。。。。。。。。。。。。。

参考:
Android中APK签名工具之jarsigner和apksigner详解
https://cloud.tencent.com/developer/article/1743269


http://www.ppmy.cn/news/1525711.html

相关文章

【系统架构师】-论文-2024-2009年系统架构师历年论文题目

2024年5月 大数据Lambda架构的应用与分析 云原生云上DevOps运维应用与分析 模型驱动软件开发方法与应用 论单元测试在软件回归测试中的应用和分析 2023年 论面向对象设计的应用与实现 论多数据源集成的应用与实现 论软件可靠性模型的设计与实现 论边缘计算技术的设计与实现 …

openssh移植:精致的脚本版

前置文章: busybox移植:全能脚本版-CSDN博客 zlib交叉编译-CSDN博客 openssl移植:精致的脚本版-CSDN博客 源码下载 官网:http://www.openssh.com/ 下载了一个很新的版本 ftp://mirrors.sonic.net/pub/OpenBSD/OpenSSH/portable/openss…

android API、SDK与android版本

随着 Android 系统的不断更新,API Level 也会随之增加。每个新的 API Level 都引入了新的功能、改进旧的功能,或者弃用了旧的 API。开发者在开发应用时,需要指定目标 API Level,也就是应用最低支持的 Android 版本。 API Level 与…

C++速通LeetCode简单第9题-二叉树的最大深度

深度优先算法递归: /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr), right…

Java面试题·解释题·单例模式、工厂模式、代理模式部分

系列文章目录 Java面试题解释题JavaSE部分 Java面试题解释题框架部分 Java面试题解释题单例模式、工厂模式、代理模式部分 文章目录 系列文章目录前言一、设计模式1. 单例模式1.1 单例模式的定义1.2 单例模式的实现方法 2. 工厂模式2.1 工厂模式的定义2.2 工厂模式的实现方法2…

JAVA毕业设计175—基于Java+Springboot+vue3的医院预约挂号管理系统(源代码+数据库)

毕设所有选题: https://blog.csdn.net/2303_76227485/article/details/131104075 基于JavaSpringbootvue3的医院预约挂号管理系统(源代码数据库)175 一、系统介绍 本项目前后端分离(可以改为ssm版本),分为用户、医生、管理员三种角色 1、用户&#x…

使用Python自动抓取亚马逊网站商品信息

全量数据抓取不现实,但可以自动化、小批量采集亚马逊数据,现在可用的工具也非常多,包括Python以及一些专门的爬虫软件,我用过几个比较好入手的,像web scraper、八爪鱼、亮数据。 比如亮数据爬虫,它提供数据…

Qt C++ Udp相关知识学习(一)

文章目录 udp 单播消息,是什么意思特点:使用场景:例子:udp 广播消息,是什么意思特点:使用场景:示例:参考udp 单播消息,是什么意思 UDP 单播消息(UDP unicast)是指使用用户数据报协议(UDP)通过网络发送消息的过程,消息的接收者是单个特定的目标设备或IP地址。 特…

uniapp与webview进行数据通信

uniapp与webview进行数据通信&#xff1a; <!DOCTYPE html> <html><head><meta charset"utf-8" /><meta name"viewport" content"widthdevice-width,initial-scale1,minimum-scale1,maximum-scale1,user-scalableno"…

Redis简介、常用命令及优化

文章目录 一、关系数据库​​与非关系型数据库概述1. 关系型数据库2. 非关系型数据库3.关系数据库与非关系型数据库区别 二、Redis简介1.Redis的单线程模式2.Redis 优点3.Redis 缺点 三、安装redis四、Redis 命令工具五、Redis 数据库常用命令六、Redis 多数据库常用命令七、Re…

【Linux取经之路】软件包管理器yum编辑器vim及其配置

目录 软件包管理器yum 1、什么是软件包 2、关于lrzsz 3、安装软件 4、查看软件 5、卸载软件 编辑器——vim 1、vim的基本概念 2、vim的基本操作 3、vim普通模式命令集 4、底行模式命令集 5、vim的配置 配置sodu权限 软件包管理器yum 1、什么是软件包 在Linux下…

大顶堆+动态规划+二分

前言&#xff1a;我们这一题需要分类讨论 对于我们左边和右边的我们需要预处理 有点类似反悔堆的做法&#xff0c;得出i之前取出 m 个元素代价最小&#xff0c;并且这个代价一定是递减的&#xff08;可以推导一下&#xff09; 题目地址 #include<bits/stdc.h> using name…

使用脚手架来创建 express 项目

使用脚手架&#xff08;scaffold&#xff09;可以快速搭建Express应用程序的基本结构。Express自身提供了一个官方脚手架工具叫做express-generator&#xff0c;它可以帮助你快速地生成一个包含基本文件结构的Express项目。 安装Express Generator 首先&#xff0c;你需要全局…

AI在医疗领域:MEDIC 全面评估大模型在医疗领域的应用

随着医疗领域中大型语言模型&#xff08;LLMs&#xff09;的迅猛发展&#xff0c;公众对于其评估的需求日益增长&#xff0c;要求超越传统的USMLE等基准测试&#xff0c;以更全面地反映模型在现实世界中的应用性能。尽管现实世界的评估对于衡量模型的实用性具有重要价值&#x…

【uni-app】小兔鲜项目--拉取小兔鲜儿项目模板代码

1. 拉取小兔鲜儿项目模板代码 模板地址 git clone -b template https://gitee.com/heima-fe/uniapp-shop-vue3-ts.git heima-shop步骤 在写代码的文件夹&#xff0c;输入CMD&#xff0c;打开终端&#xff0c;直接执行克隆命令 2.通过VS Code打开heima-shop文件夹&#xff0…

c语言 stdio.h 介绍

stdio.h 是 C 标准库中的一个头文件&#xff0c;提供了输入和输出功能的函数和宏。以下是它的主要内容和功能&#xff1a; 主要功能 输入输出函数&#xff1a; printf&#xff1a;格式化输出到标准输出&#xff08;通常是终端&#xff09;。scanf&#xff1a;从标准输入&#…

计算机毕业设计Python知识图谱美团美食推荐系统 美团餐厅推荐系统 美团推荐系统 美食价格预测 美团爬虫 美食数据分析 美食可视化大屏

《Python知识图谱美团美食推荐系统》开题报告 一、研究背景与意义 随着信息技术的飞速发展和互联网应用的普及&#xff0c;人们的消费习惯逐渐从线下转移到线上&#xff0c;外卖行业迎来了前所未有的发展机遇。美团作为国内领先的生活服务电子商务平台&#xff0c;拥有庞大的…

新能源汽车 BMS 学习笔记篇—BMS 基本定义及分类

一、BMS 定义 1、概念&#xff1a; BMS&#xff08;Battery Management System&#xff09;即电池管理系统&#xff0c;其管理 对象是二次电池&#xff08;充电电池或蓄电池&#xff09;&#xff0c;其主要目的是电池的利用率&#xff0c;防止电池出现过度充电和过度放电&…

Next.js 14 如何在服务端页面中使用客户端渲染组件

在Next.js中&#xff0c;默认就是使用服务端渲染的&#xff0c;那如何在服务端页面中包含客户端组件呢&#xff0c;以下是试例&#xff1a; 在ArticlePage.js中&#xff1a; import DeleteButton from /components/DeleteBtnexport default async function ArticlePage(){retu…

Airoha Get started Guide---入门指南

0 Preface/Foreword SDK: Software Development Kit&#xff0c;软件开发套件 EVK&#xff1a;Evaluation Kit&#xff0c;评估套件 BSP&#xff1a;Board Support Package&#xff0c;板级支持包 BT&#xff1a;Bluetooth ATCI: AT Command Interface NVDM: Non-Volatil…