推广 热搜: page  音视频  使用  个数  选择  搜索引擎  父亲  百度  企业  可以 

android签名代码校验 android签名验证

   日期:2024-12-31     作者:ira0v    caijiyuan   评论:0    移动:http://ww.kub2b.com/mobile/news/17380.html
核心提示:android apk签名(为什么 如何做 验证)这篇文章其实就是根据自己的疑问然后结合多个文章结合成的一、为什么要签名:1、发送者的


android apk签名(为什么 如何做 验证)

这篇文章其实就是根据自己的疑问然后结合多个文章结合成的

一、为什么要签名: 

1、发送者的身份认证,由于开发商可能通过使用相同的Package Name来混淆替换已经安装的程序,以此保证签名不同的包不被替换
2、保证信息传输的完整性,签名对于包中的每个文件进行处理,以此确保包中内容不被替换,防止交易中的抵赖发生,Market对软件的要求

二、签名的说明:
1、所有的应用程序都必须有数字证书,Android系统不会安装一个没有数字证书的应用程序
2、Android程序包使用的数字证书可以是自签名的,不需要一个权威的数字证书机构签名认证
3、如果要正式发布一个Android应用,必须使用一个合适的私钥生成的数字证书来给程序签名,而不能使用adt插件或者ant工具生成的调试证书来发布
4、 数字证书都是有有效期的,Android只是在应用程序安装的时候才会检查证书的有效期。如果程序已经安装在系统中,即使证书过期也不会影响程序的正常功能
5、签名后需使用zipalign优化程序
6、Android将数字证书用来标识应用程序的作者和在应用程序之间建立信任关系,而不是用来决定最终用户可以安装哪些应用程序
三、签名的方法:

1、  用eclipse插件方式签名

2、  调试签名

eclipse插件默认赋予程序一个DEBUG权限的签名,此签名的程序不能发布到market上,此签名有效期为一年,如果过期则导致你无法生成apk文件,此时你只要删除debug keystore即可,系统又会为你生成有效期为一年的新签名
b) 开发者生成密钥并签名
右键点击项目名,在菜单中选择Android Tools,然后选择Export Signed ApplicationPackage…,即可通过eclipse自定义证书并签名
c) 开发者导出未签名的包
右键点击项目名,在菜单中选择Android Tools,然后选择Export Signed ApplicationPackage…,即可导出未签名的包,之后可通过命令行方式签名

3、用命令行方式签名
使用标准的java工具keytool和jarsigner来生成证书和给程序签名

每个签名的apk都会看到如下信息

否则就是没有签名
d) 优化(签名后需要做对齐优化处理)
zipalign -v 4 your_project_name-unaligned.apk your_project_name.apk 

4、在源码中编译的签名
a) 使用源码中的默认签名
在源码中编译一般都使用默认签名的,在某源码目录中用运行


其中-3是算法的参数,2048是密钥长度,testkey.pem 是输出的文件
 


把的格式转换成PKCS #8,这里指定了-nocryp,表示不加密,所以签名时不用输入密码

四、签名的相关文件
1) apk包中签名相关的文件在meta_INF目录下
CERT.SF:生成每个文件相对的密钥
MANIFEST.MF:数字签名信息
xxx.SF:这是JAR 文件的签名文件,占位符 xxx标识了签名者
xxx.DSA:对输出文件的签名和公钥
2)相关源码

五、签名的相关问题
一般在安装时提示出错:INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES
1)        两个应用,名字相同,签名不同
2)        升级时前一版本签名,后一版本没签名
3)        升级时前一版本为DEBUG签名,后一个为自定义签名
4)        升级时前一版本为Android源码中的签名,后一个为DEBUG签名或自定义签名
5)        安装未签名的程序
6)        安装升级已过有效期的程序
6.         相关工具
1)        查看某个x509证书的的有效日期

签名具体步骤:

Apk签名首先要有一个keystore的签名用的文件.

keystore是由jdk自带的工具keytool生成的.具体生成方式参考一下:

开始->运行->cmd->cd 到你安装的jdk的目录这里我是 C:Program FilesJavajdk1.6.0_10bin

然后输入:keytool -genkey -alias asaiAndroid.keystore -keyalg RSA -validity 20000 -keystore asaiAndroid.keystore

-alias 后跟的是别名这里是 asaiAndroid.keystore

-keyalg 是加密方式这里是 RSA

-validity 是有效期 这里是 20000

-keystore 就是要生成的keystore的名称 这里是 asaiAndroid.keystore

然后按回车

按回车后首先会提示你输入密码:这个在签名时要用的要记住了哦。

然后会再确认你的密码。

之后会依次叫你输入 姓名,组织单位,组织名称,城市区域,省份名称,国家代码等。

参考:


运行完可以在 C:Program FilesJavajdk1.6.0_10bin 里找到刚才生产的keyStore文件


好现在开始给Apk签名了:

在 C:Program FilesJavajdk1.6.0_10bin 还提供一个工具 jarsigner.exe

好现在可以在刚才的命令行后继续运行以下命令给APK签名:

jarsigner -verbose -keystore asaiAndroid.keystore -signedjar LotteryOnline_signed.apk LotteryOnline.apk asaiAndroid.keystore

-keystore:keystore 的名称

LotteryOnline_signed.apk  是签完名后的APK

LotteryOnline.apk 是签名前的apk

然后按回车:会要求输入刚才设置的密码,输入后按回车就开始签名了。

参考:


运行成功后在 C:Program FilesJavajdk1.6.0_10bin 目录下会多出一个被签名的apk文件,

参考: 

如果这种方法不行,可以试试eclipse自带的方法,也是引用“窃”别人的文章^-^

1.Eclipse工程中右键工程,弹出选项中选择 android工具-生成签名应用包:



2.选择需要打包的android项目工程:

3.如果已有私钥文件,选择私钥文件 输入密码,如果没有私钥文件见 第6和7步创建私钥文件:


4.输入私钥别名和密码:


5.选择APK存储的位置,并完成设置 开始生成:

6.没有私钥文件的情况,创建私钥文件:

7.输入私钥文件所需信息,并创建:


补充:

    如果需要最终发行你的android程序,必需为apk文件签名。这里apk和jar的签名方式都是一样的,使用sun jdk的jarsigner工具来完成,但是执行时会提示jarsigner: 无法对 jar 进行签名: java.util.zip.ZipException: invalid entry compressed size (expected xxx but got xxx bytes)这样的提示,

     这些问题主要是由于资源文件造成的,对于android开发来说应该检查res文件夹中的文件,逐个排查。这个问题可以通过升级系统的JDK和JRE版本来解决。

本文地址:http://ww.kub2b.com/news/17380.html     企库往 http://ww.kub2b.com/ ,  查看更多

特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。

 
 
更多>同类最新文章
0相关评论

文章列表
相关文章
最新动态
推荐图文
最新文章
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号