[Rom]如何用Android源码生成签名文件
Posted 灰灰的Rom笔记
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Rom]如何用Android源码生成签名文件相关的知识,希望对你有一定的参考价值。
背景需求
前段时间在做一个类似于开机向导的系统级应用时,碰到签名不一致,不能直接通过 AS 部署到样机的问题。一开始我的做法是,先在 AS 里面调试好,然后签名打包成 apk,然后把 apk 放到 android源码
下,利用源码的 platform
签名文件,重新给 apk 签名,然后再 push 到样机上。这样是有效的,反复三五次还能忍,但是频繁调试的时候,折腾的那叫一个心累。
因此就在想可不可以把源码的签名文件放到AS
里面,这样就可以一步到位直接run
进样机呢?然后一通百度Google,终于发现了如下这个办法。
准备工作
首先在 Android 源码目录执行如下命令,切到security
目录:
cd build/target/product/security/
然后执行 ls -la
可以查看目录下的文件:
shawn:/....../build/target/product/security(master)$ ls -la
total 68
drwxrwxr-x 2 shawn shawn 4096 7月 11 18:07 .
drwxrwxr-x 3 shawn shawn 4096 7月 27 20:20 ..
-rw-rw-r-- 1 shawn shawn 260 7月 11 18:07 Android.mk
-rw-rw-r-- 1 shawn shawn 1216 7月 11 18:07 media.pk8
-rw-rw-r-- 1 shawn shawn 1675 7月 11 18:07 media.x509.pem
-rw-rw-r-- 1 shawn shawn 1216 7月 11 18:07 platform.pk8
-rw-rw-r-- 1 shawn shawn 1675 7月 11 18:07 platform.x509.pem
-rw-rw-r-- 1 shawn shawn 3123 7月 11 18:07 README
-rwxrwxr-x 1 shawn shawn 1217 7月 11 18:07 releasekey.pk8
-rwxrwxr-x 1 shawn shawn 1716 7月 11 18:07 releasekey.x509.pem
-rw-rw-r-- 1 shawn shawn 1218 7月 11 18:07 shared.pk8
-rw-rw-r-- 1 shawn shawn 1675 7月 11 18:07 shared.x509.pem
-rw-rw-r-- 1 shawn shawn 1217 7月 11 18:07 testkey.pk8
-rw-rw-r-- 1 shawn shawn 1675 7月 11 18:07 testkey.x509.pem
-rw-rw-r-- 1 shawn shawn 524 7月 11 18:07 verity_key
-rw-rw-r-- 1 shawn shawn 1219 7月 11 18:07 verity.pk8
-rw-rw-r-- 1 shawn shawn 1444 7月 11 18:07 verity.x509.pem
其中platform.pk8
就是制作系统签名需要的文件。
详细步骤
1、在 security
目录下,执行命令:
openssl pkcs8 -inform DER -nocrypt -in platform.pk8 -out platform.pem
此时会在当前目录(security目录)生成临时文件platform.pem
。
2、接着执行如下命令,将在目录下生成platform.p12
文件,它本质上应该就是一个数字证书。
openssl pkcs12 -export -in platform.x509.pem -out platform.p12 -inkey platform.pem -password pass:android -name androiddebugkey
这里的
android
和androiddebugkey
可以自行替换,但为了方便记忆,我们尽量将这两个参数与 IDE 默认的签名文件(debug.keystore)内容保持一致。
3、然后再执行如下命令:
keytool -importkeystore -deststorepass android -destkeystore ./platform.jks -srckeystore ./platform.p12 -srcstoretype PKCS12 -srcstorepass android
这里执行后会有如下提示信息:
shawn:/....../build/target/product/security(master)$ keytool -importkeystore -deststorepass android -destkeystore ./platform.jks -srckeystore ./platform.p12 -srcstoretype PKCS12 -srcstorepass android
Entry for alias androiddebugkey successfully imported.
Import command completed: 1 entries successfully imported, 0 entries failed or cancelled
1 个成功,0 个失败或取消,说明命令执行成功,已经在当前目录下生成了 platform.jks
文件,而这个文件就是可以在 Eclipse 或 Android Studio 里面用的签名文件了。
命令里面的
platform.jks
对应的就是生成的签名文件的名称,这个名字可以自行修改,而且后缀也可以换成.keystore
,例如debug.keystore
。
4、然后将这个 platform.jks
拷贝到自己的目录下,并在 IDE 中使用这个签名文件签名 apk ,或者直接将 IDE 默认的签名文件替换掉,AS 也可以修改编译脚本。
5、此时 IDE 打包的 apk 就可以直接安装到拥有相同platform
签名的机器中了。
说明
1、这个方法借鉴的别人的,但忘了记下原始链接。
2、方法里面使用的是platform
签名,但 Android 源码有media
、platform
、releasekey
、shared
、testkey
、verity
这6种签名,个人猜测将上面步骤中的platform
替换成其他名称也是能获得对应签名文件的,我这里没有去验证这个猜想。
原文出自我的简书笔记:https://www.jianshu.com/p/bee31edd6e10
现已迁移至此。
支持一下:
以上是关于[Rom]如何用Android源码生成签名文件的主要内容,如果未能解决你的问题,请参考以下文章