Android应用程序签名简介
2011-12-14 11:37
260 查看
Android的应用程序APK的签名其实和一般的jar 文件签名差不多。
首先,得到keystore文件.
你可以从一些机构申请得到一个keystore;也可以自己生成一个自签的keystore文件。APK和jar签名所用的keystore文件是一致的。
因此关于生成自签keystore文件,请参照《Jar文件的数字签名》
另外android本身自带一个keystore文件debug.keystore。它一般位于以下目录:C:\Documents
and Settings\用户名\.android\。对于Administrator用户,位于C:\Documents and Settings\Administrator\.android\目录下
其次,签名。
我们可以直接用JDK的jarsigner工具对apk文件进行签名。
实例1:
jarsigner -keystore robin.keystore -storepass GL2009 -keypass gl2009 Hello.apk robin
这个命令用密码“GL2009”从名为“robin.keystore”的keystore文件中提出名字为“robin”、密码为“gl2009”的公钥/私钥对,并对Hello.apk
文件按照keystore文件robin.keystore中的约定进行数字签名。签名的输出文件为原apk文件,即Hello.apk。
实例2:
jarsigner -keystore robin.keystore -storepass GL2009 -keypass gl2009 -signedjar Hello_signed.apk Hello.apk robin
这个命令用密码“GL2009”从名为“robin.keystore”的keystore文件中提出名字为“robin”、密码为“gl2009”的公钥/私钥对,并对Hello.apk文件按照keystore文件robin.keystore中的约定进行数字签名,签名的输出文件为Hello_signed.apk。
补充
使用sun jdk的jarsigner工具来进行签名时,有时会失败出现类似如下的提示:
jarsigner: unable to sign jar: java.util.zip.ZipException: invalid entry compres
sed size (expected 9301 but got 9621 bytes)
网上有人说:这些问题主要是由于资源文件造成的,对于android开发来说应该检查res文件夹中的文件,逐个排查。这个问题可以通过升级系统的JDK和JRE版本来解决。
但是网上提供一种更直接简单而且有效的方法,即:把apk压缩包下面的文件夹META-INF删除掉再重新执行上面的签名命令。
当然这种方法的缺点是,如果原apk已经是签名过,你在删除META-INF目录时,它以前的签名也删除了。
另外,关于数字签名的更多东西请参考《数字签名简介》和《Java的数字签名和数字证书》
首先,得到keystore文件.
你可以从一些机构申请得到一个keystore;也可以自己生成一个自签的keystore文件。APK和jar签名所用的keystore文件是一致的。
因此关于生成自签keystore文件,请参照《Jar文件的数字签名》
另外android本身自带一个keystore文件debug.keystore。它一般位于以下目录:C:\Documents
and Settings\用户名\.android\。对于Administrator用户,位于C:\Documents and Settings\Administrator\.android\目录下
其次,签名。
我们可以直接用JDK的jarsigner工具对apk文件进行签名。
实例1:
jarsigner -keystore robin.keystore -storepass GL2009 -keypass gl2009 Hello.apk robin
这个命令用密码“GL2009”从名为“robin.keystore”的keystore文件中提出名字为“robin”、密码为“gl2009”的公钥/私钥对,并对Hello.apk
文件按照keystore文件robin.keystore中的约定进行数字签名。签名的输出文件为原apk文件,即Hello.apk。
实例2:
jarsigner -keystore robin.keystore -storepass GL2009 -keypass gl2009 -signedjar Hello_signed.apk Hello.apk robin
这个命令用密码“GL2009”从名为“robin.keystore”的keystore文件中提出名字为“robin”、密码为“gl2009”的公钥/私钥对,并对Hello.apk文件按照keystore文件robin.keystore中的约定进行数字签名,签名的输出文件为Hello_signed.apk。
补充
使用sun jdk的jarsigner工具来进行签名时,有时会失败出现类似如下的提示:
jarsigner: unable to sign jar: java.util.zip.ZipException: invalid entry compres
sed size (expected 9301 but got 9621 bytes)
网上有人说:这些问题主要是由于资源文件造成的,对于android开发来说应该检查res文件夹中的文件,逐个排查。这个问题可以通过升级系统的JDK和JRE版本来解决。
但是网上提供一种更直接简单而且有效的方法,即:把apk压缩包下面的文件夹META-INF删除掉再重新执行上面的签名命令。
当然这种方法的缺点是,如果原apk已经是签名过,你在删除META-INF目录时,它以前的签名也删除了。
另外,关于数字签名的更多东西请参考《数字签名简介》和《Java的数字签名和数字证书》
相关文章推荐
- 【转载】Android应用程序签名简介
- Android应用程序签名详解 简介
- Android应用程序签名概述
- Android 应用程序(APK) 如何获得系统签名权限 强制关闭程序(后台进程)
- Android应用程序签名
- Android应用程序如何进行系统签名
- Android JNI 获取应用程序签名
- android应用程序签名(转)
- 用Android自带的signapk.jar签名应用程序
- Android应用程序签名相关的理论知识
- 给 Android 应用程序签名
- 用Android自带的signapk.jar + .x509.pem + .pk8签名应用程序
- 如何查看Android应用程序签名打包… 分类: Android开发 2014-05-30 10:53 89人阅读 评论(0) 收藏
- Android应用程序签名 debug签名
- 用Android自带的signapk.jar + .x509.pem + .pk8签名应用程序
- Android中应用程序如何获得系统签名权限
- android获取应用程序签名
- Android_应用程序签名
- Eclipse下Android应用程序签名打包
- Android应用程序如何进行系统签名