Creating Release Keys and Signing Builds

来源:互联网 发布:软件版本管理规范 编辑:程序博客网 时间:2024/05/17 04:06

原文:http://blog.csdn.net/a345017062/article/details/6096791
一、简介 Android要求每一个程序必须用开发者的数字密钥签名,标明使用权限。同时,应用程序也需要使用共享的用户ID来目标进程。Android平台的核心组件使用四个密钥来保持安全性。 1、platform:核心平台的部分包使用的密钥。 2、shared:home/contacts进程中共享的东西使用的密钥。 3、media:media/download系统中部分包使用的密钥。 4、releasekey:不标明其它类型密钥时,使用的默认密钥。 这些密钥用来对发布的iamges文件中的应用程序进行签名,但Android编译系统不使用它们。编译系统使用build/target/product/security/中的testkeys来对包进行签名。因为testkeys是Android开源项目中的一部分,所以不要使用它对发布的产品进行签名,而是应该由设备制造商生成自己的私有密钥。 

二、生成密钥 对于设备制造来说,每一个产品的密钥都应该存储在vendor/<vendor_name>/security/<product_name>下面,<vendor_name>和<product_name>分别代表设备制造商和产品名字。为了简化密钥创建过程,把下面的脚本复制到mkkey.sh文件中。如果要定制你的密钥的话,把以AUTH开头的行改为代表你的company的信息。 #!/bin/sh AUTH='/C=US/ST=California/L=Mountain View/O=Android/OU=Android/CN=Android/emailAddress=android@android.com' if [ "$1" == "" ]; then echo "Create a test certificate key." echo "Usage: $0 NAME" echo "Will generate NAME.pk8 and NAME.x509.pem" echo " $AUTH" exit fi openssl genrsa -3 -out $1.pem 2048 openssl req -new -x509 -key $1.pem -out $1.x509.pem -days 10000 / -subj "$AUTH" echo "Please enter the password for this key:" openssl pkcs8 -in $1.pem -topk8 -outform DER -out $1.pk8 -passout stdin mkkey.sh是一个用来生成平台密钥的脚本。你输入的密码在你的终端窗口中是可见的。 要生成4个平台密钥的话,运行四次mkkey.sh脚本,每一次写入不同的密钥名字和密码。 sh mkkey.sh platform # enter password sh mkkey.sh media # enter password sh mkkey.sh shared # enter password sh mkkey.sh release # enter password 

三、签名过程 签名过程分为两步: 1、对所有的部分单独进行签名。 2、把各个部分打包成image文件。 

四、签名应用程序 使用build/tools/releasetools/sign_target_files_apks来签名一个叫target_files的包。这个包不会按默认方式编译,执行make时,一定要加上”dist”. make -j4 PRODUCT-<product_name>-user dist 上面的命令在out/dist下面创建了一个叫做<product_name>-target_files.zip的文件,你需要把这个文件传递给sign_target_files_apks脚本。像下面这样运行脚本: ./build/tools/releasetools/sign_target_files_apks -d vendor/<vendor_name>/security/<product_name> <product_name>-target_files.zip signed-target-files.zip 如果你项目中有已经编译过或者签过名的apk,而你又不想让它们被重新签名的话,必须为每一个你想忽略的APK在命令行上加上-e Foo.apk=来忽略它们。 sign_target_files_apks还有许多其它在签名时非常有用的选项。用只带一个-h参数的方式运行它会看到全部的帮助信息。 

五、创建image文件 产生文件后,你就可以通过下面的方式生成image文件。 build/tools/releasetools/img_from_target_files signed-target-files.zip signed-img.zip signed-img.zip包含所有的.img文件。你可以通过fastboot update signed-img.zip把它们安装到设备上。

原创粉丝点击