如何发布android应用程序,app增加签名证书(安卓签名证书)

如何发布android应用程序,app增加签名证书(安卓签名证书),第1张

Android系统要求,所有的程序经过数字签名后才能安装。Android系统使用这个证书来识别应用程序的作者,并且建立程序间的信任关系。证书不是用于用户控制哪些程序可以安装。证书不需要授权中心来签名:Android应用程序上使用自己签名的证书是完全允许且普遍的。

理解Android应用程序签名有以下几个重要点:

·所有的应用程序都必须签名。系统不会安装任何一个不签名的程序。

·你可以使用自己的证书来签名。不需要任何授权中心。

·当你要为最终用户发布你的应用程序的时候,你必须签入一个合适的密钥。你不可以发布程序的时候还使用SDK工具签入的DebugKey。

·系统只在安装应用程序的时候检测证书的有效期。如果应用程序在安装之后证书失效了,那么,应用程序还是可以正常工作。

·你可以使用标准工具——Keytool和Jarsigner——生成Key并签名apk文件。

·一旦你为应用程序签名了,一定要使用zipalign工具来优化最终的APK包。

Android系统不会安装和运行没有正确签名的应用程序。这条规则适用于任何运行Android系统的地方,不管是真机还是模拟器。正是由于这个原因,你必须在模拟器或真机上运行/调试程序之前对程序进行签名。

当你调试应用程序时,AndroidSDK工具替你对应用程序进行了签名。Eclipse的ADT插件和Ant编译工具都提供了两种签名模式——Debug模式和Release模式。

·当开发和测试时,你可以使用Debug模式。在Debug模式下,编译工具使用内嵌在JDK中的Keytool工具来创建一个keystore和一个key(包含公认的名字和密码)。在每次编译的时候,使用这个DebugKey来为apk文件签名。由于密码是公认的,在每次编译的时候,也不需要提示你输入keystore和key密码。

·当你的程序准备发布时,你必须在Release模式下,使用密钥来为apk文件签名。有以下两种方式可以做到:

1命令行中使用Keytool和Jarsigner。在这个方法中,首先需要编译出一个未签名的apk。然后使用Jarsigner(或相似的工具),用你的密钥为apk手动签名。如果你没有合适的密钥,你可以运行Keytool来手动生成自己的keystore/key。

2使用ADT导出向导。如果你使用Eclipse/ADT插件进行开发,你可以使用导出向导来编译程序,生成密钥(如果需要),并为apk签名,所有这些 *** 作都在导出向导中。一旦你的程序签名了,别忘了运行zipalign来为apk进行额外的优化。

签名策略

应用程序签名的某些方面可能会影响应用程序的开发,特别是你打算一起发布多个应用程序的时候。一般来说,推荐的策略是在整个应用程序寿命内,所有的程序签上相同的证书。

以下有几个应该这么做的原因:

·应用程序升级——当你对应用程序进行升级时,如果你想用户平稳的升级,那么,你就需要签上相同的证书。当系统安装一个升级应用程序时,如果新版本的证书与老版本的证书有匹配的话,那么,系统才会允许进行升级。如果你没有为版本签上合适的证书,当你安装时,你需要给应用程序指定一个新的包名——在这种情况下,用户安装的新版本,被当作是一个全新的应用程序。

·应用程序模块化——如果应用程序请求的话,Android系统允许签有相同证书的应用程序运行在相同的进程里,这样,系统就会把它们看作是一个单一的应用程序。用这种方法配置应用程序,用户可以选择更新每个独立的模块。

·代码/数据权限共享——Android系统提供了基于签名的权限检查,因此,如果应用程序间签有特定的证书,那么,它们之间可以共享功能。通过多个程序签有相同的证书并且使用基于签名的权限检查,你的程序可以以一种安全的方式共享代码和数据。还有一个决定签名策略的重要因素是:如何设定key的有效期。

·如果你计划支持单个应用程序的升级,你需要确保你的key拥有一个超过期望的应用程序生命周期的有效期。推荐使用25年或更多的有效期。当你的key过期了,用户也就不能平稳的更新到新版本了。

·如果你想给多个无关的应用程序签上相同的key,那么,你必须确保key的有效期超过所有应用程序所有版本的生命周期,包括将来有可能添加到这一阵营的程序。

·如果你想在上发布你的程序,key的有效期必须在20331022以后。Market服务器强制这一要求,目前是保证用户可以平稳的更新他们的程序。

当你设计应用程序时,一定要把这些点记在脑子里,并且使用一个合适的证书来为应用程序签名。

签名的基本设定

在你开始之前,你必须保证Keytool对SDK编译工具来说是可利用的。多数情况下,你可以通过设置JAVA_HOME环境变量来告诉SDK编译工具如何找到Keytool。另外,你还可以添加JDK中Keytool的路径到PATH的变量里。

如果你在Linux上开发,并且使用GNU编译器来编译Java,那么,请确保系统是使用JDK中的Keytool,而不是gcj。如果Keytool已经在你的PATH中,它有可能是对/usr/bin/keytool的符号链接。在这种情况下,检查符号链接的目标,确保它是指向JDK中的Keytool。如果你打算对公众释放你的应用程序,你还需要Jarsigner工具。Jarsigner和Keytool都包含在JDK中。

Debug模式下签名

Android编译工具提供了Debug签名模式,使得开发和调试应用程序更加容易,而且还满足Android系统的签名要求。当使用Debug模式编译你的app时,SDK工具会调用Keytool工具自动创建一个Debug的keystore和key。然后,这个Debugkey会自动用于apk的签名,这样,你不需要使用你自己的key来为应用程序包签名。

SDK工具使用预先定义好的名字/密码来创建/key:

·Keystore名字:“debugkeysotre”

·Keystore密码:“android”

·Key别名:“”

·Key密码:“android”

·CN:“CN=,O=Android,C=US”

如果需要的话,你可以改变/key的位置和名字,或者提供一个自定义的/key。然而,任何自定义的/key必须使用和默认Debugkey(上面描述的)相同的名字和密码。(在Eclipse/ADT中, *** 作Windows>Preferences>Android>Build实现。)

注意:你不能将签有Debug证书的应用程序发布给公众。

Eclipse用户

如果你在Eclipse/ADT下开发(并且已经按照上面描述的“签名的基本设定”配置了Keytool),Debug模式下签名默认是开启的。当你运行或是调试应用程序时,ADT会使用Debug证书进行签名,并运行zipalign,然后安装到选择的模拟器或是连接上的设备。整个过程不需要你参与,前提是ADT能访问Keytool。

Ant用户

如果你使用Ant来编译你的apk文件,需要在ant命令中添加debug选项来开启Debug签名模式(假设你正在使用由android工具生成buildxml文件)。当你运行antdebug来编译你的程序时,编译脚本会生成一个keystore/key,并为apk进行签名。然后脚本会使用zipalign工具对apk进行对齐处理。整个过程不需要你参与。阅读“其它IDE下开发:Debug模式编译”来了解更多的信息。

Debug证书过期

Debug模式下签名用的证书(默认是Eclipse/ADT和Ant编译)自从它创建之日起,1年后就会失效。

当证书失效时,你会得到一个编译错误,在Ant编译上,错误如下:

debug:

[echo]/samples-debugapk,

[exec]/4/083:43PM

在Eclipse/ADT中,Android控制台上你将会看到一个相似的错误。

为了解决这个问题,只需要删掉debugkeystore文件即可。AVD默认存储的位置在:~/android/avd(OSX和Linux),C:\android(WindowsXP),C:Users\android()。

当下一次编译的时候,编译工具会重新生成一个新的keystore和Debugkey。

Release模式下签名

当你的程序准备好释放给其它用户时,你必须:

1获取一个合适的密钥

2在Release模式下编译程序

3使用密钥签名程序

4对齐APK包

如果你是使用Eclipse/ADT插件开发,你可以使用导出向导来完成编译、签名和对齐等 *** 作。在整个过程中,导出向导甚至还可以生成一个新的keystore和密钥。因此,如果你使用Eclipse,你可以直接跳到“使用EclipseADT编译和签名”。

获取一个合适的密钥为了进行程序的签名,首先,你必须有一个合适的密钥。密钥指:

·个人持有。

·代表个人、公司或组织实体的身份。

·拥有一个有效期。有效期推荐超过25年。

如果你在上发布你的程序,需要注意一点的是:程序的有效期需要在20331022之后。你不能上传一个应用程序,而它的key的有效期是在这个日期之前。

·不是由AndroidSDK工具生成的Debugkey。

如果你没有一个合适的key,你一定要使用Keytool来生成一个。如“基本设定”中描述的,确保Keytool可用。

为了用Keytool生成一个key,使用keytool命令并传入一些可选参数,如下表所示。

警告:确保密钥的安全。一定要阅读“安全储存你的密钥”中讨论如何确保你的密钥的安全以及这对你和用户为何如此重要。尤其是,当你生成你的密钥时,一定要为keystore和key使用强密码。

问题一:安装包无签名怎么回事 无签名 也就是没有责任方 这样的软件有可能携带病毒

如果要安装这样的软件 在设置里选择信任无签名软件就可以正常安装了

但如果出现因为安装无签名的软件导致的一切问题由自己承担

问题二:下载软件的时候安装失败,上面显示安装包无签名是什么意思 去百度重新下载个,没签名的APK是安装不了的

问题三:更新包无签名是什么意思 大概意思就是你的安装包没有通过验证吧。以下引用别人的回答:大家可能要问证书有什么用?证书就是为了给软件签名用的,没证书就无法签名软件,那么软件签名有什么用呢? 首先我们要了解签名的作用,S60 第三版在安全性方面做了比较大的改善,对在系统中安装运行的第三方软件有更为严格的规定。某些涉及手机软硬件安全/个人信息安全等方面的 *** 作被做了特别的限制(比如随手机开机自动启动就是被限制的功能之一)。应用程序要实现这些被特别限制了的功能就必须获得“签名”。也就是说要有人来为这个 *** 作的安全性负责!未经任何签名的程序不能安装运行。签名(sign):就是在应用程序的特定字段写入特定的标记信息,表示该软件已经通过了签署者的审核。签署者对该软件的安全性负责。其中签名又大致分三种:1 Symbian 签名。 即 Symbian(塞班)手机 *** 作系统官方签名。通过了 Symbian 安全认证的软件才会获得 Symbian 的 签名。该类软件有最高的安全级别。在手机上能正常安装/运行/且能实现软件提供的所有功能 获得 Symbian签名需要软件作者直接和 Symbian 官方打交道,基于多方面的原因, 并不是所有软件的作者都有能力获得这个认证的。2 作者签名。 软件作者在发布软件的时候就对软件进行了签名。这类软件可以在手机上安装运行(可能会遇到安全 性警告,可跳过)。但不能实现那些“被特别限制”了的功能。如果某软件根本不涉及这类功能,那么 软件作者也完全可能自己签名就行了。还有一种可能就是软件虽然有某部分功能属于“被特别限制”的 范围,但并不是主要功能。软件作者也可能发布一个“作者签名版”,这样的版本可以正常使用大部分 功能,但会丧失一些特定功能。如“来电通”软件就有这样的版,几乎全部功能都可以使用,只是不能 开机自启动。3 用户签名。(就是证书区现在用的那种,最少把这一段看完吧) 严格来说这个应该是属于“开发者签名”。因为 Symbian 为软件开发者提供一种“开发证书”,原意本来 是让软件开发者作软件测试用的。这个“开发证书”是与作为测试用的机器的 IMEI 码挂钩的。使用这种 证书签名的软件只能在该 IMEI 码对应的机器上使用,不能用于别的机器。 我们所谓的“自签名”其实就是利用了这个方式,说白了就是你说你是开发软件的,你提供你测试机器 的 IMEI 码,Symbian 颁发给你一个“开发证书”,你用这个证书签名你的“测试软件”。你自己对你自己 的“开发行为”负责!如此而已。另外,开发证书自颁发日起有效期为半年但在证书有效期内签署好了的 程序的使用时限是没有限制的如果你有要用签名的话可以去塞班论坛申请新的证书和签名工具。

问题四:qq安装失败,安装包,无签名是什么意思 重新安装吧!不是什么大问题

问题五:下载软件的时候都会显示安装无签名是什么意思 你好,请到正规网站去下载,如果没有签名,你可以用工具对其进行签名,这个是安卓系统的安全机制,每个软件都要有签名的。如果要用签名工具,需要先安装JAVA,然后配置环境变量,这些步骤完成后,可以用签名工具进行签名,推荐你用apk manager

问题六:安装微信出现该数据包没签名是什么情况? 可能下载的不是官方版本的微信,重新下载官方版本;

下载安装包的时候网络问题,导致安装包下载损坏;

下载的微信版本比较低,请下载最新版本的微信;

在设置红安全选项,允许安装未知软件!

问题七:下载东西为什么安装不上 显示安装包没有签名是怎么回事我的是手机 检查手机内存,可能是安装包破损

问题八:为什么在华为应用市场安装软件,却显示安装包无签名 这是很常见的现象,楼主习惯就好,因为手机自带市场里面本身东西就很少,所以有的软件找不到是很正常的,装上之后又叫你更新,是因为软件本身已经有了更高的版本但是市场里面还没有更新版本,所以才会这样,楼主如果觉得麻烦的话可以换一个市场进行下载的,我用的是应用宝,这里面软件资源比较丰富,一般我要找的游戏这里面都会有的,而且更新也比较快,不过有时候也有这种情况,不过很少,因为毕竟市场更新速度还是比软件本身慢的

问题九:安装软件说是更新包无签名怎样解决 人的眼睛就像生活中的一个小镜头

问题十:什么叫签名安装 大家可能要问证书有什么用?证书就是为了给软件签名用的,没证书就无法签名软件,那么软件签名有什么用呢?

首先我们要了解签名的作用,S60 第三版在安全性方面做了比较大的改善,对在系统中安装运行的第三方软件有更为严格的规定。某些涉及手机软硬件安全/个人信息安全等方面的 *** 作被做了特别的限制(比如随手机开机自动启动就是被限制的功能之一)。应用程序要实现这些被特别限制了的功能就必须获得“签名”。也就是说要有人来为这个 *** 作的安全性负责!未经任何签名的程序不能安装运行。

签名(sign):就是在应用程序的特定字段写入特定的标记信息,表示该软件已经通过了签署者的审核。

签署者对该软件的安全性负责。其中签名又大致分三种:

1 Symbian 签名。

即 Symbian(塞班)手机 *** 作系统官方签名。通过了 Symbian 安全认证的软件才会获得 Symbian 的

签名。该类软件有最高的安全级别。在手机上能正常安装/运行/且能实现软件提供的所有功能

获得 Symbian签名需要软件作者直接和 Symbian 官方打交道,基于多方面的原因,

并不是所有软件的作者都有能力获得这个认证的。

2 作者签名。

软件作者在发布软件的时候就对软件进行了签名。这类软件可以在手机上安装运行(可能会遇到安全

性警告,可跳过)。但不能实现那些“被特别限制”了的功能。如果某软件根本不涉及这类功能,那么

软件作者也完全可能自己签名就行了。还有一种可能就是软件虽然有某部分功能属于“被特别限制”的

范围,但并不是主要功能。软件作者也可能发布一个“作者签名版”,这样的版本可以正常使用大部分

功能,但会丧失一些特定功能。如“来电通”软件就有这样的版,几乎全部功能都可以使用,只是不能

开机自启动。

3 用户签名。(就是证书区现在用的那种,最少把这一段看完吧)

严格来说这个应该是属于“开发者签名”。因为 Symbian 为软件开发者提供一种“开发证书”,原意本来

是让软件开发者作软件测试用的。这个“开发证书”是与作为测试用的机器的 IMEI 码挂钩的。使用这种

证书签名的软件只能在该 IMEI 码对应的机器上使用,不能用于别的机器。

我们所谓的“自签名”其实就是利用了这个方式,说白了就是你说你是开发软件的,你提供你测试机器

的 IMEI 码,Symbian 颁发给你一个“开发证书”,你用这个证书签名你的“测试软件”。你自己对你自己

的“开发行为”负责!如此而已。另外,开发证书自颁发日起有效期为半年但在证书有效期内签署好了的

程序的使用时限是没有限制的

如果你有要用签名的话可以去塞班论坛申请新的证书和签名工具

以上就是关于如何发布android应用程序,app增加签名证书(安卓签名证书)全部的内容,包括:如何发布android应用程序,app增加签名证书(安卓签名证书)、什么叫安装包无签名、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/10131884.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存