安卓应用程序的签名

article/2025/10/19 2:56:52

签名安卓应用程序



Android应用以它的包名作为唯一标识。如果在同一部手机上安装两个包名相同的应用,后面安装的应用就会覆盖前面安装的应用。为了避免这种情况的发生,Android要求对作为产品发布的应用进行签名。


签名主要有如下两个作用:

1.确定发布者的身份。由于应用开发者可以通过使用相同包名来替换已经安装的程序,因此使用签名可以避免发生这种情况,也就是避免别人通过发布相同包名的程序来替换掉你发布的程序。

2.确保应用的完整性。签名会对应用包中的每个文件进行处理,从而确保程序包中的文件不会被替换。

通过上面的介绍不难看出,Android应用签名的作用类似于现实生活中的签名。当开发者对Android应用签名时,相当于告诉外界:该应用程序是由“我”开发的,“我”会对该应用程序负责----因为有签名(签名有密钥),别人无法冒名顶替“我”;与此同时,“我”也无法冒名顶替别人。


注意:在应用的开发、调试阶段,EclipseADT插件或Ant工具会自动生成调试证书对Android应用签名,因此部署、调试过程并没有经过签名。需要指出的是,如果要正式发布一个Android应用,必须使用合适的数字证书来给应用程序签名,不能使用ADT插件或Ant工具生成的调试证书来发布。



Eclipse中对安卓应用签名



开发的过程中我们大多数时候都会直接在Eclipse中对Android应用签名,在Eclipse中对Android应用签名的步骤如下:

1.右键点击Android项目,在下拉菜单中选择“Android Tools---->Export Signed Application Package...”,操作如下:



点击之后会弹出一个提示框,显示如下:



选择要导出的工程,因为是在要导出的工程上点的鼠标右键,所以默认就是要导出的工程,所以这一步不需要什么操作,直接点Next >”,显示如下:



2.选中Create new keystore”单选按钮,按照格式填写数字证书的存储路径和密码。操作显示如下:



3.按照上述格式填写完成后点击Next >”,Eclipse会弹出如下提示框:


按照上图所示填写数字证书的详细信息。


4.填写完毕之后点击Next >”,显示如下:


该窗口用于指定生成签名后的APK安装包的存储路径。


5.点击Finish”,完成签名。Eclipse会在指定路径下生成一个签名后的APK安装包。


上面的步骤制作了新的数字证书,一旦数字证书制作完成,以后就可以直接使用该数字证书签名了。利用已有的数字证书进行签名,请按照如下步骤进行:


1.在需要签名的工程上点击鼠标右键,默认工程不需要修改,直接点下一步,直到出现如下截图:



点击Browse...”,选择刚刚生成的数字签名,操作显示如下:


选中之后,输入该数字签名对应的密码。


2.上述内容输入之后,点击Next >”,显示如下:


选择制作该数字签名时创建的别名为keyzz”(我创建的是这个别名,大家根据自己创建的别名进行选择)的key,并输入创建该key时指定的密码。


3.上述操作完成之后,点击Next >”,显示如下:


选择签名后APK包的存储路径,上面黄色叹号提示的英文“Destination file already exists”意思是目标文件已经存在,这个不用管,直接覆盖之前的文件即可,如果不想覆盖,就点“Browse...”,重新选择一个存储路径。


4.选择完之后,点Finish”按钮即可生成签名后的APK包。



使用命令对安卓应用签名



如果不想借助于Eclipse提供的方式对Android应用程序签名,或在某些场合下,需要对一个“未签名”的APK包进行签名,则可通过“命令”来对Android应用进行手动签名。


使用命令对Android应用签名的步骤如下:

1.创建keystore库。JDK的安装目录下的bin子目录下提供了keytool.exe工具来生成数字证书。点击“开始”--->“运行”,然后输入“cmd”,在弹出的命令行界面用cd命令切换到你安装的jdk的目录里(如果你已经添加到环境变量里面了,那也可以不用切换到jdk的目录下),我的是“C:\Program Files\Java\jdk1.6.0_22\bin”,在命令行窗口输入如下命令:


keytool -genkeypair -alias zzfeng.keystore -keyalg RSA -validity 1000 -keystore zzfeng.keystore


上面命令中各选项说明如下:

-genkeypair:指定生成数字证书。

-alias:指定生成数字证书的别名。

-keyalg:指定生成数字证书的算法。使用RSA算法。

-validity:指定生成的数字证书的有效期(单位是天)。

-keystore:指定所生成的数字证书的存储路径


输入上述命令后按回车键,接下来将会以交互式方式让用户输入数字证书keystore的密码、作者、公司等详细信息,操作如下图所示:


注意:该步骤的作用是生成属于你们公司、你的数字证书,这个步骤只要做一次即可。一旦数字证书创建成功之后,只要在该证书有效期内,可以一直重复使用该证书。


2.生成未签名的APK安装包。在Eclipse中鼠标右键点击Android项目,在下拉菜单中选择“Android Tools---->Export Unsigned Application Package...”,Eclipse会弹出一个保存文件的对话框,当我们选择好存储文件的位置和文件名后单击“保存”(有的版本是“Finish”)按钮即可生成一个未签名的APK安装包。操作显示如下:





3.使用jarsigner”命令对未签名的APK安装包进行签名。在步骤1中到的目录下有“jarsigner.exe”工具,可以用来进行签名。命令行窗口输入如下命令:


jarsigner -verbose -keystore zzfeng.keystore -signedjar BleDevManager-signed.apk BleDevManager.apk zzfeng.keystore


上面的命令中各选项的说明如下:

-verbose:指定生成详细的输出。

-keystore:指定数字证书的存储路径(上述命令直接用的数字证书名是因为数字证书就在当前目录下,如果是其他目录,需要在数字证书名前加相应的路径)。

-signedjar:该选项的三个参数分别为签名后的APK包、未签名的APK包和数字证书的别名。


注意上述的命令中路径和文件名等一定要跟自己的对应,因为你设置的路径和文件名有可能跟我的不一样,大家根据自己设置的对应修改一下即可。

输入上述命令之后按回车键,接下来将会以交互式方式让用户输入数字证书keystore的密码,操作显示如下:


签名完成。


4.使用zipalign.exe”工具优化APK安装包。“zipalign.exe”是Android自带的一个档案整理工具,它可用于优化APK安装包,从而提升Android应用与系统之间的交互效率,提升应用程序的运行速度。该工具存在于SDK tools下,我的路径是“E:\adt-bundle-windows-x86-20130917\sdk\build-tools\19.1.0”,如果找不到,可以在sdk目录下搜索一下。如果存在的路径没有设置到环境变量里面去,那我们就在命令行中用cd命令切换到上述路径中,并将刚签过名的需要优化的APK安装包也复制到该路径下,然后在命令行窗口输入如下命令:


zipalign -f -v 4 BleDevManager-signed.apk BleDevManager-signed-zip.apk


上面的命令中各选项说明如下:

-f:指定强制覆盖已有的文件。

-v:指定生成详细输出。

4:指定档案整理所基于的字节数,通常指定为4,也就是基于32位进行整理。

BleDevManager-signed.apkBleDevManager-signed-zip.apk分别指定整理前的APK和整理后生成的APK


运行上述命令,将会在当前目录下生成一个BleDevManager-signed-zip.apk”文件,这就是签名完成且经过优化的APK安装包,该安装包可以对外发布了。操作显示如下:




http://chatgpt.dhexx.cn/article/h3et94lj.shtml

相关文章

android app签名方法

1、生成签名文件 在android studio 里操作如下: 填完即可。 会产生这个签名文件。 2、签名app 到jdk的bin文件夹下输入下面命令: jarsigner -verbose -keystore D:\appkey\geming.jks D:\svn\Bigdata\IOT\iot-village-app\village\platforms\android\…

Android应用签名

为了要签名? 开发Android的人这么多,完全有可能大家都把类名,包名起成了一个同样的名字,这时候如何区分?签名这时候就是起区分作用的。 由于开发商可能通过使用相同的Package Name来混淆替换已经安装的程序&#xff0c…

Android App签名

Andriod应用程序如果要在手机或模拟器上安装,必须要有签名! 1.签名的意义   为了保证每个应用程序开发商合法ID,防止部分开放商可能通过使用相同的Package Name来混淆替换已经安装的程序,我们需要对我们发布的APK文件进行唯一…

Android开发给apk签名

前言 最近360加固助手签名突然收费了,加固完后要自己签名了。在此记录一下自己使用命令行签名步骤。 之后又更新了加固助手,点击自动签名提示如下: 之前没提示工具包手动签名,平时也就加固下应用,也没太注意工具包&…

Andorid进行签名的方式

目录 Android签名的简介 1.Android签名的作用 2.签名的方式 2.1签名方式的比较 3.在AS上操作的一般步骤(手动签名) 3.1 在AS操作步骤如下图 4.apk常用的签名方法(系统签名)有两种 4.1 使用工具对apk进行签名 4.2 在Ubuntu系统下,通过命令行进行签名 Androi…

Android APP的签名

Android APP的签名 Android项目以它的包名作为唯一的标识,如果在同一部手机上安装两个包名相同的APP,后者就会覆盖前面安装的应用。为了避免Android APP被随意覆盖,Android要求对APP进行签名。下面介绍对APP进行签名的步骤 1、选择builder菜…

keil中c语言定义数组,如题,KeilC51位变量能不能定义数组

公告: 为响应国家净网行动,部分内容已经删除,感谢读者理解。 话题:如题,KeilC51位变量能不能定义数组回答:试试呗我的结论是不行 会报错 error C168: array of bit 手册描述:An array may not have type bi…

【C 语言】数组 ( 数组类型表达 | 定义数组类型 )

文章目录 总结一、数组类型表达二、定义数组类型三、代码示例 总结 // 定义类数组数据类型 int [10] , 类型别名为 ArrayTypetypedef int (ArrayType)[10];// 与 int array[10] {0}; 作用相同ArrayType array2 {0};一、数组类型表达 C 语言中的 数据类型 分为 基础数据类型 ,…

JavaScript定义数组

JavaScript定义数组 JavaScript中定义数组的方法: 定义时直接给数组元素赋值 var arr[值1,值2,值3....]定义一个空数组 var arr[];定义一个空数组并通过索引来赋值 var arrnew Array(); arr[0]1; arr[1]2;提示: JavaScript为数组提供了一个length属…

用卷积公式计算“独立随机变量之和”的概率分布 Distribution of sum of independent Rayleigh random variables

https://math.stackexchange.com/questions/1019375/distribution-of-sum-of-independent-rayleigh-random-variables

信号处理的卷积公式

《信号与系统》关于卷积的公式: 离散 序列卷积和 周期卷积 循环卷积 连续 卷积积分

卷积基本计算公式

1. 理论公式 2. tensorflow中使用 输入图片大小 WW Filter大小 FF 步长strides S padding的像素数 P 输出大小为NxNpadding “SAME”时,会在图像的周围填 “0”,padding “VALID”则不需要,即 P0。一般会选“SAME”,以来减缓图…

卷积公式的理解,卷积其实就是叠加与衰减。

对于初学者,我推荐用复利的例子来理解卷积可能更直观一些: 小明存入100元钱,年利率是5%,按复利计算(即将每一年所获利息加入本金,以计算下一年的利息),那么在五年之后他能拿到的钱数…

卷积公式细谈

原文地址:http://www.ilovematlab.cn/thread-293710-1-1.html ————————————-conv2函数—————————————- 1、用法 Cconv2(A,B,shape); %卷积滤波 复制代码 A:输入图像,B:卷积核 假设输入图像A大小为ma x na,卷…

关于卷积公式的模型

在信号分析处理中,卷积是最重要的运算,但是一般计算中,关于卷积的“反褶”,“平移”,“累加和”这三个步骤,其计算步骤和卷积的实际意义,貌似“脱离”,从而影响对信号与系统相互作用…

【概率】常见分布(离散/连续)、卷积公式(实际意义与作用、公式、记忆法)

发现自己对各种分布不太熟悉,决定趁此机会整理一下,看有没有比较好的记忆方法。 各种分布最重要的理解它的实际意义,都是解决什么问题的,其次是公式的含义。 所以下面都按以下几点来展开:实际意义、数学表达、对表达式…

概率论中多元随机变量函数分布中的卷积公式原来是重积分换元

文章目录 重积分换元(雅克比行列式)卷积公式①:把$x$换掉 确定范围卷积公式做定义法来做Zmax{X,Y}Zmin{X,Y} 重积分换元(雅克比行列式) { x x ( u , v ) y y ( u , v ) \left\{\begin{matrix} xx(u,v)\\ \\ yy(u,v) …

详解卷积公式的物理意义

作者:Uncle Jack 日期:2020/03/15 分解思维 1. 人类科学有一个特点是喜欢使用分解的思维去理解分析很多复杂的事物,比如傅里叶级数把很多奇形怪状的函数分解成无穷多个三角函数,又比如力学分析中把单个力分解成直角坐标系中的的…

matlab作卷积的公式,卷积相关公式的matlab代码

取半径3 用matlab代码实现上式公式: length3; for Ki 1:length for Kj 1:length for Kk 1:length Ksigma(Ki,Kj,Kk)exp(-(Ki-2)^2/8-(Kj-2)^2/8-(Kk-2)^2/8); 此公式为:K(u), ρ3 end end end KONE convn(ones(size…

卷积公式和分布函数去解决Z=X+Y,Z=XY,Z=Y/X等Z的概率密度函数以及如何确定他们的范围

第三个公式ZY/X,概率密度中不是z-x是z*x(打印错了),其次适用于X和Y都是连续型 下面介绍分布函数法,是比较麻烦的一种办法,下面的f(x,y)其中如果x和y独立的话,f(x,y)f(x)*f(y) 下面这个例子全部的积分区域为x和y的&a…