Android 应用程序签名

深入了解Android应用程序签名 应用程序签名是将数字签名应用于 Android 应用程序(APK 文件)的过程。它使用密钥对对应用程序进行加密,确保在应用程序发布和分发过程中的完整性和真实性。验证完整性:签名可确保 APK 文件在传输或分发过程中没有被篡改或损坏。验证真实性:签名允许用户验证应用程序的来源和开发者身份,以确保 APK 来自可信的来源。安全性:签名可以防止恶意用户在未经授权的情况下更改应用程序的代码或资源。apksigner 是 Android SDK 中的一个命令行工具,用于对 APK 文件进行签名和验证。 阅读详情

Android应用程序签名相关的理论知识包括:什么是签名、为什么要给应用程序签名、如何给应用程序签名等。

1、什么是签名?       如果这个问题不是放在Android开发中来问,如果是放在一个普通的版块,我想大家都知道签名的含义。可往往就是将一些生活中常用的术语放在计算机这种专业领域,大家就开始迷惑了。计算机所做的事情,或者说编程语言所做的事情,不正是在尽可能地模拟现实吗?所以,计算机中所说的签名和生活中所说的签名在本质上是一样的,它所起到的作用也是一致的!

2、为什么要给Android应用程序签名?       如果只能用一句简单的话语来回答这个问题的话,我会说:“这是Android系统所要求的”。 Android系统要求每一个Android应用程序必须要经过数字签名才能够安装到系统中,也就是说如果一个Android应用程序没有经过数字签名,是没有办法安装到系统中的!Android通过数字签名来标识应用程序的作者和在应用程序之间建立信任关系,不是用来决定最终用户可以安装哪些应用程序。这个数字签名由应用程序的作者完成,并不需要权威的数字证书签名机构认证,它只是用来让应用程序包自我认证的。

3、为什么我开发的Android应用程序没有做什么签名也能在模拟器和手机上运行?       你没有给Android应用程序签名并不代表Android应用程序没有被签名。为了方便我们开发调试程序,ADT会自动的使用debug密钥为应用程序签名。debug密钥?它在哪?debug密钥是一个名为debug.keystore的文件,它的位置: Ubuntu: ~/.android/debug.keystore (win7: c:/user/.Android/debug.keystore;  xp: C:/Documents and Settings/user/.Android/debug.keystore) “user”对应于你自己的windows操作系统用户名,这也就意味着,如果我们想拥有自己的签名,而不是让ADT帮我们签名的话,我们也要有一个属于自己的密钥文件(*.keystore)。

4、Android应用程序签名步骤 1)准备工作       apk的签名工作可以通过两种方式来完成: 1)通过ADT提供的图形化界面完成apk签名;

            右键项目——》 Android Tools ——》Export Signed Application Package... ——》 打开图形界面       2)完全通过shell/dos命令来完成apk签名             我比较喜欢第2)种方式,所以下面将讲解如何通过命令的方式完成apk签名。             给apk签名一共要用到3个工具,或者说3个命令,分别是:keytool、 jarsigner、 zipalign,下面是对这3个工具的简单介绍: 1)keytool:生成数字证书,即密钥,也就是上面说到的扩展名为.keystore的那类文件;   2)jarsigner:使用数字证书给apk文件签名; 3)zipalign:对签名后的apk进行优化,提高与Android系统交互的效率(Android SDK1.6版本开始包含此工具)       从这3个工具的作用也可以看出,这3个工具的使用顺序。通常我们自己所开发的所有应用程序,都是使用同样的签名,即使用同一个数字证书,这就意味着:如果你是第一次做Android应用程序签名,上面的3个工具都将用到;但如果你已经有数字证书了,以后再给其它apk签名时,只需要用到jarsigner和zipalign就可以完成。       为了方便使用上面3个命令,首先需要将上面3个工具所在路径添加到环境变量path中(我说的是为了方便使用,没有说必须要这么做)。怎么配置环境变量请参见我先前的博客(Windows 或 Ubuntu),这里需要说一下这3个工具默认所在的路径: 1)keytool:该工具位于jdk安装路径的bin目录下;     2)jarsigner:该工具位于jdk安装路径的bin目录下;    3)zipalign:该工具位于Android-sdk-windows/tools/目录下       不知道大家是否注意到keytool和jarsigner两个工具是jdk自带的,也就意味着生成数字证书和文件签名不是Android的专利;另外从字面上理解jarsigner也能猜得出该工具主要是用来给jar文件签名的。

2)生成未经签名的apk文件       既然我们要自己对apk进行签名,就不再需要ADT默认帮我们签名了。如何得到一个未经签名的apk文件呢?打开Eclipse,在Android工程名称上点击右键,依次选择“Android Tools” - “Export Unsigned Application Package ...”,然后选择一个存储位置保存即可。这样就得到了一个未经签名的apk文件。

3)使用keytool工具生成数字证书 keytool -genkey -v -keystore it-homer.keystore -alias it-homer.keystore -keyalg RSA -validity 20000 说明:       1)keytool是工具名称,-genkey意味着执行的是生成数字证书操作,-v表示将生成证书的详细信息打印出来,显示在dos窗口中;       2)-keystore  it-homer.keystore 表示生成的数字证书的文件名为“ it-homer.keystore”;       3)-alias  it-homer.keystore 表示证书的别名为“ it-homer.keystore”,当然可以不和上面的文件名一样;       4)-keyalg RSA 表示生成密钥文件所采用的算法为RSA;       5)-validity 20000 表示该数字证书的有效期为20000天,意味着20000天之后该证书将失效 在执行上面的命令生成数字证书文件时,会提示你输入一些信息,包括证书的密码,示例如下:

4)使用jarsigner工具为Android应用程序签名 jarsigner -verbose -keystore  it-homer.keystore -signedjar notepad_signed.apk notepad.apk  it-homer.keystore 说明:       1)jarsigner是工具名称,-verbose表示将签名过程中的详细信息打印出来,显示在dos窗口中;       2)-keystore  it-homer.keystore 表示签名所使用的数字证书所在位置,这里没有写路径,表示在当前目录下;       3)-signedjar notepad_signed.apk notepad.apk 表示给notepad.apk文件签名,签名后的文件名称为notepad_signed.apk;       4)最后面的 it-homer.keystore 表示证书的别名,对应于生成数字证书时-alias参数后面的名称

5)使用zipalign工具优化已签名的apk(非必须但建议这么做) zipalign -v 4 notepad_signed.apk notepad_signed_aligned.apk 说明:       1)zipalign是工具名称,-v表示在DOS窗口打印出详细的优化信息;       2)notepad_signed.apk notepad_signed_aligned.apk 表示对已签名文件notepad_signed.apk进行优化,优化后的文件名为notepad_signed_aligned.apk

说明:如果你以前的程序是采用默认签名的方式(即debug签名),一旦换了新的签名应用将不能覆盖安装,必须将原先的程序卸载掉,才能安装上。因为程序覆盖安装主要检查两点:       1)两个程序的入口Activity是否相同。两个程序如果包名不一样,即使其它所有代码完全一样,也不会被视为同一个程序的不同版本;       2)两个程序所采用的签名是否相同。如果两个程序所采用的签名不同,即使包名相同,也不会被视为同一个程序的不同版本,不能覆盖安装。

另外,可能有人可能会认为反正debug签名的应用程序也能安装使用,那也没有必要自己签名了嘛。千万不要这样想,debug签名的应用程序有这样两个限制,或者说风险:       1)debug签名的应用程序不能在Android Market上架销售,它会强制你使用自己的签名;       2)debug.keystore在不同的机器上所生成的可能都不一样,就意味着如果你换了机器进行apk版本升级,那么将会出现上面那种程序不能覆盖安装的问题。不要小视这个问题,如果你开发的程序只有你自己使用,当然无所谓,卸载再安装就可以了。但要是你的软件有很多使用客户,这就是大问题了,就相当于软件不具备升级功能!

加群:Android进阶群 4112676,可免费获取Android进阶资料哦

Android应用程序签名指南 在Android开发中,为应用程序签名是一个重要的步骤。应用程序签名可以确保应用程序的完整性和身份验证,并防止未经授权的修改。下面将详细介绍如何给Android应用程序签名的步骤和相应的源代码。首先,我们需要生成一个密钥库(Keystore),它包含了应用程序的签名信息。请注意,上述代码中的密码和文件名是示例,请根据实际情况进行修改和替换。另外,生成的密钥库和签名证书应该妥善保存,以便将来进行应用程序的更新和维护。通过这些步骤,你可以为你的应用程序生成一个独特的签名,确保应用程序的完整性和身份验证。 阅读详情

相关推荐

等保2.0下可信验证的动态实现与合规实践

本文深入解读等保2.0标准中的“可信验证”要求,并重点探讨其动态实现与合规实践。文章阐述了从可信根、信任链到动态验证的核心概念,拆解了不同安全等级的实施差异,并提供了从硬件选型、软件赋能到平台集成的四步落地指南。通过行业案例与避坑心得,为构建覆盖计算环境、区域边界、通信网络和安全管理中心的全链条可信防御体系提供了实用参考。

d3e4f的博客 827

深入了解 Android 中的应用程序签名

应用程序签名是将数字签名应用于 Android 应用程序(APK 文件)的过程。它使用密钥对对应用程序进行加密,确保在应用程序发布和分发过程中的完整性和真实性。

特立独行的博客 4071

HDMI 2.1超高清传输背后的“隐形功臣”:深入浅出图解VESA DSC压缩核心流程

本文深入解析HDMI 2.1超高清传输中的VESA DSC压缩技术,揭示其如何在不损失画质的前提下实现带宽减半。通过切片并行处理和智能算法,DSC技术有效解决了8K/4K高帧率视频的传输瓶颈,成为现代显示设备不可或缺的“隐形功臣”。

weixin_30615767的博客 423

Android keystore 多种方式获取 MD5、签名信息等(包含快应用)

都是比较常用的两种密钥库格式/标准,这两者之间是可以通过导入/导出的方式进行转换的,这种转换需要通过。下面就是正常的安卓获取应用签名部分了!软件,输入刚才的包名,点击获取,就能得到这个对应包名的。,意味个人信息交换文件,则是通过更为常用的。,填写完了,点击完成,在根目录中会生成一个。,则会自动获取本机中对应包名的应用的。,这是一个安卓签名证书,然后填写好。的文件,这个就是安卓的签名证书了,签名证书后,获取应用签名可以通过。2、就会输出下面这样的信息,也就是。,然后新建一个空项目,重点是。

卡尔特斯 1万+

VSCode+ESP-IDF开发环境搭建:从零开始创建你的第一个物联网项目(2024最新版)

本文详细介绍了如何在2024年使用VSCode和ESP-IDF搭建物联网开发环境,从零开始创建第一个物联网项目。内容包括环境准备、ESP-IDF配置、项目创建与结构解析、构建烧录步骤以及高级技巧和常见问题解决方案,帮助开发者快速上手ESP32开发。

weixin_29165725的博客 330

【实战指南】RF-DETR目标检测全流程:从数据准备到工业部署

本文详细介绍了RF-DETR目标检测模型的全流程应用,从数据准备、模型训练到工业部署。RF-DETR作为基于Transformer的先进模型,在COCO基准测试中表现优异,推理速度超越YOLOv8,特别适合工业场景。文章还提供了数据标注、COCO格式转换、超参数调优及边缘设备部署的实用技巧,帮助开发者高效实现目标检测任务。

weixin_29081101的博客 420

Android 获取应用签名

应用签名工具类:ApplySigningUtils.java 在MainActivity的onCreate调用签名工具类(记得安装已打包的APK,直接运行获取到的签名是不正确的) 这样就能获取到应用签名啦 2、可从微信开发平台下载工具进行获取 安装完APK,输入自己的应用包名,就可以获取应用签名APK下载地址如下:https://res.wx.qq.com/open/zh_CN/htmledition/res/dev/download/sdk/Gen_Signature_Android2.a

m0_60746014的博客 8021

CAB单片机开发指南

CAB单片机开发使用指南,IDE安装及烧录注意事项

Zoebuxiangtian的博客 1558

Android应用程序的签名

程序中的名为run的target的depends属性compile,而名为compile的target的depends属性是prepare,所以这几个target执行的顺序是prepare->compile->run。-----------------------------------------------------------------------------------以下为转载---------------------------------------------------

2501_90392068的博客 1272

基于DE2-115红外解码实验

基于DE2-115红外解码实验   一、   功能描述 在同一个遥控电路中通常要使用实现不同的遥控功能或区分不同的机器类型, 这样就要求信号按一定的编码传送,编码则会由编码芯片或电路完成。对应于编码芯片通常会有相配对的解码芯片或包含解码模块的应用芯片。在实际的产品设计或业余电子制作中,编码芯片并一定能完成我们要求的功能,这时我们就需要了解所使用的编码芯片到底是如何编码的。只有知道编码方式,我...

乘风的博客 2513

重构工业交互体验:响应式数据可视化大屏解决方案

从智慧园区到数据中心,从水务监控到风力发电场景,HT 通过 2D/3D 组态技术与响应式布局机制,让数据以更灵活、更精准的方式呈现场景动态 —— 这正是 HT 技术在工业可视化领域的核心价值。例如,在智慧楼宇监控系统中,HT 引擎可实时渲染建筑结构、设备状态与数据流,同时确保画面在不同尺寸屏幕上的一致性。以某工业数据中心大屏为例,HT 通过暗红色主调搭配工业元素,结合粉色与黄色点缀,打破传统深蓝色大屏的视觉定式,同时通过矢量图形确保色彩在不同亮度下的辨识度 —— 这正是 HT 技术在视觉设计上的独特优势。

Hightopo的博客 889

[014] Android应用程序签名详解

      本文主要讲解Android应用程序签名相关的理论知识,包括:什么是签名、为什么要给应用程序签名、如何给应用程序签名等。1、什么是签名?      如果这个问题不是放在Android开发中来问,如果是放在一个普通的版本,我想大家都知道签名的含义。可往往就是将一些生活中常用的术语放在计算机这种专业领域,大家就开始迷惑了。计算机所做的事情,或者说编程语言所做的事情,不正是在尽可能地模拟现实吗?所以,计算机中所说的签名和生活中所说的签名在本质上是一样的,它所起到的作用也是一致的!      让我们来看看

柳峰的专栏 4万+

雨雾天YOLOv8检测拉胯?暗通道去雾+上下文注意力双优化,mAP从58%飙到79%,暴雨也能看清车牌

室外交通监控:高速、省道的雨雾天检测,重点解决小车、货车漏检;车载ADAS系统:雨天行车时的前方车辆、行人识别,需实时性(<40ms);隧道出入口:明暗交界+雾天的复杂场景,暗通道能平衡亮度。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1380

Android应用程序签名 debug签名

Android系统要求所有的程序经过数字签名才能安装,如果没有可用的数字签名,系统将不许安装运行此程序,不管是模拟器还是真实手机。因此,在设备或者是模拟器上运行调试程序之前,必须为应用程序设置数字签名。Android系统仅仅会在安装的时候测试签名证书的有效期,如果应用程序的签名是在安装之后才到期,那么应用程序仍然可以正常启用。             Android通过数字签名来 标识应用程

Central-Perk的专栏 1万+

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

2024年Android最全Android应用程序签名 debug签名,安卓面试题及答案

通常你开发的所有应用程序,都是使用同样的签名,即使用同一个数字证书。只要是程序员,不管是Java还是Android,如果不去阅读源码,只看API文档,那就只是停留于皮毛,这对我们知识体系的建立和完备以及实战技术的提升都是不利的。3)-alias liufeng.keystore 表示证书的别名为“liufeng.keystore”,当然可以不和上面的文件名一样;1)keytool是工具名称,-genkey意味着执行的是生成数字证书操作,-v表示将生成证书的详细信息打印出来,显示在dos窗口中;

2401_84123201的博客 759

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Android应用程序签名详解

本文主要讲解Android应用程序签名相关的理论知识,包括:什么是签名、为什么要给应用程序签名、如何给应用程序签名等。 1、什么是签名? 如果这个问题不是放在Android开发中来问,如果是放在一个普通的版块,我想大家都知道签名的含义。可往往就是将一些生活中常用的术语放在计算机这种专业领域,大家就开始迷惑了。计算机所做的事情,或者说编程语言所做的事情,不正是在尽可能地模拟现实吗?所以,计算机中

心系旭阳 516

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Android应用程序签名

注:文章首次发布于个人博客,现将技术文章转移至此。 http://blog.go3k.org/android-sign/ Android系统要求所有的程序经过数字签名才能安装,如果没有可用的数字签名,系统将不许安装运行此程序,不管是模拟器还是真实手机。因此,在设备或者是模拟器上运行调试程序之前,必须为应用程序设置数字签名。Android系统仅仅会在安装的时候测试签名证书的有效期,如果应用

omegayy的专栏 3156

android中怎样将自己的应用程序的签名改为系统签名一样

1.使用已经存在的签名到处android应用程序的apk 2.使用压缩软件打开apk,进入META-INF目录下,删除应用程序的3个签名文件 3.到android系统目录build/target/product/security/拷贝系统签名文件:platform.x509.pem、platform.pk8到应用apk中。 4.利用签名工具signapk.jar修改应用程序签名:

lg878398509的专栏 2万+

Android:什么是签名、为什么要给应用程序签名、如何给应用程序签名

Android应用程序签名相关的理论知识包括:什么是签名、为什么要给应用程序签名、如何给应用程序签名等。 1、什么是签名?      如果这个问题不是放在Android开发中来问,如果是放在一个普通的版块,我想大家都知道签名的含义。可往往就是将一些生活中常用的术语放在计算机这种专业领域,大家就开始迷惑了。计算机所做的事情,或者说编程语言所做的事情,不正是在尽可能地模拟现实吗?所以,计算

DUKE0317的专栏 1984

Android应用程序签名相关的理论知识,包括:什么是签名、为什么要给应用程序签名、如何给应用程序签名等。

本文主要讲解Android应用程序签名相关的理论知识,包括:什么是签名、为什么要给应用程序签名、如何给应用程序签名等。 1、什么是签名?       如果这个问题不是放在Android开发中来问,如果是放在一个普通的版块,我想大家都知道签名的含义。可往往就是将一些生活中常用的术语放在计算机这种专业领域,大家就开始迷惑了。计算机所做的事情,或者说编程语言所做的事情,不正是在尽可能地模拟现实吗

小小时代的专栏 781

Android应用程序签名,初级安卓开发面试题

3)zipalign:该工具位于Android-sdk-windows/tools/目录下2.生成未经签名的apk文件打开Eclipse,在Android工程名称上点击右键,依次选择“Android Tools” - “Export Unsigned Application Package …”,然后选择一个存储位置保存即可。这样就得到了一个未经签名的apk文件。说明:1)keytool是工具名称,-genkey意味着执行的是生成数字证书操作,-v表示将生成证书的详细信息打印出来,显示在dos窗口中。

2401_84149733的博客 653
上一篇: Android TouchEvent事件传递机制
下一篇: Android --- 图片的特效处理
动脑学院[David]
博客等级 码龄8年 44粉丝 31原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值