android签名证书Android签名有什么作用-apk签名可以带来的好处 详细??

android签名证书  时间:2021-09-12  阅读:()

如何给apk文件签名

给apk文件签名主要分三步,创建证书(如果没有)-->签名-->优化(可选)1)使用jdk的keytool工具生成签名用的证书> keytool -genkey -v -alias CERT -keyalg RSA -keysize 2048 -validity 10000 -keystoreCERT.keystore 创建过程需要输入一些标识信息和密码,一些重要的参数值说明如下(根据自己的需要要进行相应的修改): CERT.keystore ---- 证书保存的文件名 CERT ---- 证书的别名 10000 ---- 10000天的有效期 2048 ---- 默认为1024 bits,Android 建议使用2048 bits或更高其他的详细信息可以使用keytool -help查看帮助 证书生成后使用如下命令可以查看证书的信息:> keytool -list -alias CERT -keystore CERT.keystore 2)使用jdk的jarsigner工具对apk文件签名> jarsigner -verbose -keystore CERT.keystore to_sign.apk CERT 签名过程需要输入证书的密码,一些重要的参数值说明如下(根据自己的需要要进行相应的修改): CERT.keystore ---- 证书保存的文件名 CERT ---- 证书的别名 待签名的apk文件根根目录下如果有文件夹“META-INFO”,请先删除(重新签名就需要这样做)。

如果不想创建过程输出太多信息,可以删除“-verbose” 。

上述签名会直接覆盖原来的文件,如果不想被覆盖而签名为另外的新文件 signed.akp,只需将 to_sign.apk 改为 -signedjar to_sign.apk signed.akp 即可。

签名后可以使用如下命令验证是否签名成功: > jarsigner -verify to_sign.apk 如果需要查看更详细的验证信息,可修改为:> jarsigner -certs -verbose -verify to_sign.apk 3)使用android sdk的zipalign工具优化已签名的apk文件> zipalign -v 4 unaligned.apk aligned.apk 注意要在签名后再zipalign。

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

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的有效期超过所有应用程序所有版本的生命周期,包括将来有可能添加到这一阵营的程序。

  ·如果你想在AndroidMarket上发布你的程序,key的有效期必须在2033.10.22以后。

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工具使用预先定义好的名字/密码来创建Debugkeystore/key:   ·Keystore名字:“debug.keysotre”   ·Keystore密码:“android”   ·Key别名:“androiddebugkey”   ·Key密码:“android”   ·CN:“CN=AndroidDebug,O=Android,C=US”   如果需要的话,你可以改变Debugkeystore/key的位置和名字,或者提供一个自定义的Debugkeysotre/key。

然而,任何自定义的Debugkeystore/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工具生成build.xml文件)。

当你运行antdebug来编译你的程序时,编译脚本会生成一个keystore/key,并为apk进行签名。

然后脚本会使用zipalign工具对apk进行对齐处理。

整个过程不需要你参与。

阅读“其它IDE下开发:Debug模式编译”来了解更多的信息。

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

  当证书失效时,你会得到一个编译错误,在Ant编译上,   错误如下:   debug:   [echo]Packagingbin/samples-debug.apk,andsigningitwithadebugkey...   [exec]DebugCertificateexpiredon8/4/083:43PM   在Eclipse/ADT中,Android控制台上你将会看到一个相似的错误。

  为了解决这个问题,只需要删掉debug.keystore文件即可。

AVD默认存储的位置在:~/.android/avd(OSX和Linux),C:DocumentsandSettings.android(WindowsXP),C:Users.android(WindowsVista)。

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

  Release模式下签名   当你的程序准备好释放给其它用户时,你必须:   1.获取一个合适的密钥   2.在Release模式下编译程序   3.使用密钥签名程序   4.对齐APK包   如果你是使用Eclipse/ADT插件开发,你可以使用导出向导来完成编译、签名和对齐等操作。

在整个过程中,导出向导甚至还可以生成一个新的keystore和密钥。

因此,如果你使用Eclipse,你可以直接跳到“使用EclipseADT编译和签名”。

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

密钥指:   ·个人持有。

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

  ·拥有一个有效期。

有效期推荐超过25年。

  如果你在AndroidMarket上发布你的程序,需要注意一点的是:程序的有效期需要在2033.10.22之后。

你不能上传一个应用程序,而它的key的有效期是在这个日期之前。

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

  如果你没有一个合适的key,你一定要使用Keytool来生成一个。

如“基本设定”中描述的,确保Keytool可用。

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

  警告:确保密钥的安全。

一定要阅读“安全储存你的密钥”中讨论如何确保你的密钥的安全以及这对你和用户为何如此重要。

尤其是,当你生成你的密钥时,一定要为keystore和key使用强密码。

Android签名有什么作用-apk签名可以带来的好处 详细??

平时我们的程序可以在模拟器上安装并运行,是因为在应用程序开发期间,由于是以 Debug 面试进行编译的,因此ADT 根据会自动用默认的密钥和证书来进行签名,而在以发布模式编译时,apk 文件就不会得到自动签名,这样就需要进行手工签名。

给apk 签名可以带来以下好处: 1.、应用程序升级:如果你希望用户无缝升级到新的版本,那么你必须用同一个证书进行签名。

这是由于只有以同一个证书签名,系统才会允许安装升级的应用程序。

如果你采用了不同的证书,那么系统会要求你的应用程序采用不同的包名称,在这种情况下相当于安装了一个全新的应用程序。

如果想升级应用程序,签名证书要相同,包名称要相同! 2.、应用程序模块化:Android 系统可以允许同一个证书签名的多个应用程序在一个进程里运行,系统实际把他们作为一个单个的应用程序,此时就可以把我们的应用程序以模块的方式进行部署,而用户可以独立的升级其中的一个模块 3.、代码或者数据共享:Android 提供了基于签名的权限机制,那么一个应用程序就可以为另一个以相同证书签名的应用程序公开自己的功能。

以同一个证书对多个应用程序进行签名,利用基于签名的权限检查,你就可以在应用程序间以安全的方式共享代码和数据了。

4.不同的应用程序之间,想共享数据,或者共享代码,那么要让他们运行在同一个进程中,而且要让他们用相同的证书签名。

VinaHost,越南vps,国内延时100MS;不限流量100Mbps

vinahost怎么样?vinahost是一家越南的主机商家,至今已经成13年了,企业运营,老牌商家,销售VPS、虚拟主机、域名、邮箱、独立服务器等,机房全部在越南,有Viettle和VNPT两个机房,其中VNPT机房中三网直连国内的机房,他家的产品优势就是100Mbps不限流量。目前,VinaHost商家发布了新的优惠,购买虚拟主机、邮箱、云服务器、VPS超过三个月都有赠送相应的时长,最高送半年...

可抵御99%的攻击中国单域版cdn:9元/月7T防御 cloudsecre

官方网站:点击访问CDN客服QQ:123008公司名:贵州青辞赋文化传媒有限公司域名和IP被墙封了怎么办?用cloudsecre.com网站被攻击了怎么办?用cloudsecre.com问:黑客为什么要找网站来攻击?答:黑客需要找肉鸡。问:什么是肉鸡?答:被控的服务器和电脑主机就是肉鸡。问:肉鸡有什么作用?答:肉鸡的作用非常多,可以用来干违法的事情,通常的行为有:VPN拨号,流量P2P,攻击傀儡,...

Digital-VM暑期全场六折优惠,8个机房

Digital-VM商家目前也在凑热闹的发布六月份的活动,他们家的机房蛮多的有提供8个数据中心,包括日本、洛杉矶、新加坡等。这次六月份的促销活动全场VPS主机六折优惠。Digital-VM商家还是有一点点特点的,有提供1Gbps和10Gbps带宽的VPS主机,如果有需要大带宽的VPS主机可以看看。第一、商家优惠码优惠码:June40全场主机六折优惠,不过仅可以月付、季付。第二、商家VPS主机套餐1...

android签名证书为你推荐
网络受限制或无连接为什么无线网络状态显示“受限制或无连接”庞大"机构庞大指挥不灵"是什么成语按键精灵教程按键精灵怎么使用容灾备份容灾备份的容灾备份建设模式win10发布win10什么时候发布正式版swift语言swift语言坑死ios开发者,这样怎么说呢?有基础入门课程推荐吗?anychartjfreechar制作柱状图的时候。由于柱子之间的差距太大。有些柱子才个位有上千导致了Y轴数据太密集。求支付宝账单查询支付宝电子账单怎么查询招行信用卡还款我是招行的信用卡!该怎么还款硬盘分区格式化怎样给硬盘分区并格式化
视频空间租用 vps侦探 上海vps 汉邦高科域名申请 新网域名解析 liquidweb 英文简历模板word 华为云主机 免费个人博客 云鼎网络 警告本网站美国保护 免费个人空间申请 新天域互联 爱奇艺会员免费试用 贵阳电信 徐州电信 网站加速 腾讯数据库 存储服务器 北京主机托管 更多