应用的打包签名
来源:互联网 发布:川岛芳子 梅艳芳 知乎 编辑:程序博客网 时间:2024/06/05 09:53
之前疏于写博客,发现很多操作过后的东西很容易忘记,此篇仅以记录或回忆,方便用到的时候可以有个参考。
一. 打包是什么?
打包就是根据签名和其他标识生成安装包。
二.签名是什么?
1.在android应用文件(apk)中保存的一个特别字符串
2.用来标识不同的应用开发者:开发者A,开发者B
3.一个应用开发者开发的多款应用使用同一个签名
就好比是一个人写文章,签名就相当于作者的署名。
如果两个应用都是一个开发者开发的,那么签名就是一样的。
这个开发者,可以是个人,也可以是公司、团体。
三.为什么要签名?
原因1:最简单直接的回答: 系统要求的。
Android系统要求每一个Android应用程序必须要经过数字签名才能够安装到系统中,也就是说如果一个Android应用程序没有经过数字签名,是没有办法安装到系统中的!原因2:不同程序员开发的应用包名可能会相同, 导致一个应用覆盖掉另一个应用。
如果只有包名的概念,那么如果B应用与已经安装的A应用包名一样,那就实现覆盖。不合理!
而事实上是装不上B的,它会提示,存在包名一致,但是签名不一样的。这就不会覆盖。
四.如何为APK签名?
如果没有key store文件,那就创建一个

这里指定一个文件名。注意:在as中,签名文件keystore类型的文件变为jks格式的文件。
这里输入的是表明是谁,不适合写一个包名。上面的密码是用来访问最上面的path路径文件的密码。而最上面的文件用来生成一个签名字符串。
下面Alias是一个别名。接下来的密码:是用来生成一个签名的时候,还需要的一个密码。与上面的密码可以不一致。
再下面的25,指的是有效期。google应用市场规定应用的有效期不低于25年。还可以改为100年。也就是说100年以后,我们的xxx.jks签名文件就失效了。


指明生成的apk的位置,Build Type:release:发布版 debug:测试版。
点击finish,稍等一会

默认在As工程中bin下生成的apk文件也有签名。只是用到了debug_keystore(测试)的模式。而我们想发布到应用市场的话,那就需要我们自己提供一个签名,不能用默认的了,不合适。如下:
查看签名文件: 
这是生成的用于生成签名的apk文件的文件。而上面的apk文件里已经包含了签名文件
五.在代码中得到应用的签名;
public void getSingInfo() { try { PackageInfo packageInfo = getPackageManager().getPackageInfo( "com.mytest.demo", PackageManager.GET_SIGNATURES); Signature[] signs = packageInfo.signatures; Signature sign = signs[0]; parseSignature(sign.toByteArray()); } catch (Exception e) { e.printStackTrace(); }}public void parseSignature(byte[] signature) { try { CertificateFactory certFactory = CertificateFactory .getInstance("X.509"); X509Certificate cert = (X509Certificate) certFactory .generateCertificate(new ByteArrayInputStream(signature)); String pubKey = cert.getPublicKey().toString(); String signNumber = cert.getSerialNumber().toString(); Log.e("TAG", "pubKey:" + pubKey); Log.e("TAG", "signNumber:" + signNumber); } catch (Exception e) { e.printStackTrace(); }}
注意:
千万不要把签名文件弄丢了
如果丢了的情况:
案例:
公司程序员A写的应用,然后走了。后来来了一个程序员B把应用更新以后,又重新打包发布,使用的签名不一致。那完了。
导致出现更新不了应用的情况。必须把应用卸载了才能重新装。那想象一下,如果一个20万用户的应用,在更新时,发现安装不了。那可能随后就卸载了。或者就不更新了。
另外还影响的是:应用市场有下载量排名,如果重新签名,那就得重头来算。
- 应用的打包签名
- Android App的签名打包_真实应用签名
- Android App的签名打包_真实应用签名
- Android 应用打包签名
- Android应用签名打包
- Android 应用签名 打包
- Android应用签名打包
- 【Android 基础】多渠道打包小结之应用的打包签名
- Android应用 打包、签名APK
- Android 签名打包应用介绍
- Ionic打包Android应用签名
- Android应用签名打包(一)
- Android Studio签名打包应用
- Android应用签名、打包实际操作
- ionc2应用打包签名流程
- 签署您的应用——多渠道签名打包教程
- ionic3应用的Android打包签名发布步骤
- App的签名打包
- Android设备兼容
- HTML+CSS编写静态网站-22 组织css文件并添加注释
- maven
- 线段树总结(二) 进阶篇
- Java Bean Annotation Constraint Validation 未完待续
- 应用的打包签名
- MATLAB从入门到算法实践
- 12-rabbitmq-远程过程调用-spring
- 选择排序
- pwnable之random
- OC动画1
- 解决“invalid conversion from void* to char*”和“deprecated conversion from string constant to 'char*' "
- 线段树总结(三) 终极篇
- 主席树总结