使用命令行方式进行签名
2012-03-22 22:55
267 查看
签名和发布应用程序
要想使Android应用程序在真机上运行,需要对apk(Android应用程序的执行文件,相当于Symbian程序的sis/sisx或Java ME程序的jar文件)文件进行签名。可以通过命令行或ADT插件方式对apk文件进行签名。本节将详细介绍签名过程。
使用命令行方式进行签名
使用命令行方式进行签名需要JDK中的两个命令行工具:keytool.exe和jarsigner.exe。可按如下两步对apk文件进行签名:
(1)使用keytool生成专用密钥(Private Key)文件。
(2)使用jarsigner根据keytool生成的专用密钥对apk文件进行签名。
生成专用密钥的命令如下:
[java] view
plaincopy
keytool -genkey -v -keystore androidguy-release.keystore
-alias androidguy -keyalg RSA -validity 3000
其中androidguy-release.keystore表示要生成的密钥文件名,可以是任意合法的文件名。androidguy表示密钥的别名,后面对apk文件签名时需要用到。RSA表示密钥算法。30000表示签名的有效天数。
在执行上面的命令后,需要输入一系列的信息。这些信息可以任意输入,但一般需要输入一些有意义的信息。下面是作者输入的信息:
[java] view
plaincopy
输入keystore密码:
再次输入新密码:
您的名字与姓氏是什么?
[Unknown]: lining
您的组织单位名称是什么?
[Unknown]: nokiaguy.blogjava.net
您的组织名称是什么?
[Unknown]: nokiaguy
您所在的城市或区域名称是什么?
[Unknown]: shenyang
您所在的州或省份名称是什么?
[Unknown]: liaoning
该单位的两字母国家代码是什么?
[Unknown]: CN
CN=lining, OU=nokiaguy.blogjava.net, O=nokiaguy,
L=shenyang, ST=liaoning, C=CN 正确吗?
[否]: Y
正在为以下对象生成 1,024 位 RSA 密钥对和自签名证书
(SHA1withRSA)(有效期为 30,000 天):
CN=lining, OU=nokiaguy.blogjava.net,
O=nokiaguy, L=shenyang, ST=liaoning, C=CN
输入<androidguy>的主密码
(如果和 keystore 密码相同,按回车):
[正在存储 androidguy-release.keystore]
在输入完上面的信息后,在当前目录下会生成一个androidguy-release.keystore文件。这个文件就是专用密钥文件。
下面使用jarsigner命令对apk文件进行签名。首先找到本章实现的例子生成的apk文件。该文件在ch02_showdatetime\bin目录中,在Windows控制台进入该目录,并将刚才生成的androidguy-release.keystore文件复制到该目录中,最后执行如下命令:
[java] view
plaincopy
jarsigner -verbose -keystore androidguy-release.
keystore ch02_showdatetime.apk androidguy
其中androidguy表示使用keytool命令指定的专用密钥文件的别名,必须指定。在执行上面的命令后,需要输入使用keytool命令设置的keystore密码和<androidguy>的主密码。如果这两个密码相同,在输入第2个密码时只需按回车键即可(要注意的是,输入的密码是不回显的)。如果密码输入正确,jarsigner命令会成功对apk文件进行签名。签完名后,我们会发现ch02_showdatetime.apk文件的尺寸比未签名时大了一些。
要想使Android应用程序在真机上运行,需要对apk(Android应用程序的执行文件,相当于Symbian程序的sis/sisx或Java ME程序的jar文件)文件进行签名。可以通过命令行或ADT插件方式对apk文件进行签名。本节将详细介绍签名过程。
使用命令行方式进行签名
使用命令行方式进行签名需要JDK中的两个命令行工具:keytool.exe和jarsigner.exe。可按如下两步对apk文件进行签名:
(1)使用keytool生成专用密钥(Private Key)文件。
(2)使用jarsigner根据keytool生成的专用密钥对apk文件进行签名。
生成专用密钥的命令如下:
[java] view
plaincopy
keytool -genkey -v -keystore androidguy-release.keystore
-alias androidguy -keyalg RSA -validity 3000
其中androidguy-release.keystore表示要生成的密钥文件名,可以是任意合法的文件名。androidguy表示密钥的别名,后面对apk文件签名时需要用到。RSA表示密钥算法。30000表示签名的有效天数。
在执行上面的命令后,需要输入一系列的信息。这些信息可以任意输入,但一般需要输入一些有意义的信息。下面是作者输入的信息:
[java] view
plaincopy
输入keystore密码:
再次输入新密码:
您的名字与姓氏是什么?
[Unknown]: lining
您的组织单位名称是什么?
[Unknown]: nokiaguy.blogjava.net
您的组织名称是什么?
[Unknown]: nokiaguy
您所在的城市或区域名称是什么?
[Unknown]: shenyang
您所在的州或省份名称是什么?
[Unknown]: liaoning
该单位的两字母国家代码是什么?
[Unknown]: CN
CN=lining, OU=nokiaguy.blogjava.net, O=nokiaguy,
L=shenyang, ST=liaoning, C=CN 正确吗?
[否]: Y
正在为以下对象生成 1,024 位 RSA 密钥对和自签名证书
(SHA1withRSA)(有效期为 30,000 天):
CN=lining, OU=nokiaguy.blogjava.net,
O=nokiaguy, L=shenyang, ST=liaoning, C=CN
输入<androidguy>的主密码
(如果和 keystore 密码相同,按回车):
[正在存储 androidguy-release.keystore]
在输入完上面的信息后,在当前目录下会生成一个androidguy-release.keystore文件。这个文件就是专用密钥文件。
下面使用jarsigner命令对apk文件进行签名。首先找到本章实现的例子生成的apk文件。该文件在ch02_showdatetime\bin目录中,在Windows控制台进入该目录,并将刚才生成的androidguy-release.keystore文件复制到该目录中,最后执行如下命令:
[java] view
plaincopy
jarsigner -verbose -keystore androidguy-release.
keystore ch02_showdatetime.apk androidguy
其中androidguy表示使用keytool命令指定的专用密钥文件的别名,必须指定。在执行上面的命令后,需要输入使用keytool命令设置的keystore密码和<androidguy>的主密码。如果这两个密码相同,在输入第2个密码时只需按回车键即可(要注意的是,输入的密码是不回显的)。如果密码输入正确,jarsigner命令会成功对apk文件进行签名。签完名后,我们会发现ch02_showdatetime.apk文件的尺寸比未签名时大了一些。
相关文章推荐
- [Android]使用命令行方式进行签名
- 使用cli(命令行)方式执行php程序进行高效的程序调试
- Android 使用Android Studio + Gradle 或 命令行 进行apk签名打包
- 使用命令行生成签名文件并用其对apk文件进行签名
- Android 使用Android Studio + Gradle 或 命令行 进行apk签名打包
- Android 使用Android Studio + Gradle 或 命令行 进行apk签名打包
- Android 使用Android Studio + Gradle 或 命令行 进行apk签名打包
- gflags.exe进行heap检测的命令行使用方式
- 使用adb 命令行对app进行重新签名
- 在命令行使用已存在的keystore对apk包进行签名
- Android 使用Android Studio + Gradle 或 命令行 进行apk签名打包
- Android 使用Android Studio + Gradle 或 命令行 进行apk签名打包
- Android 使用Android Studio + Gradle 或 命令行 进行apk签名打包
- [置顶] Android 使用Android Studio + Gradle 或 命令行 进行apk签名打包
- 通过命令行方式使用NUnit进行UT
- Android 使用Android Studio + Gradle 或 命令行 进行apk签名打包
- 使用命令行对apk文件进行二次签名
- 使用命令行生成签名文件并用其对apk文件进行签名
- java使用Cipher进行签名和验签
- 使用SN.exe对.Net生成的程序集进行签名