美文网首页
MTK平台如何用Android源码生成签名文件

MTK平台如何用Android源码生成签名文件

作者: 灰灰手记 | 来源:发表于2017-08-10 11:39 被阅读80次
    背景需求

    前段时间在做一个类似于开机向导的系统级应用时,碰到签名不一致,不能直接通过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
    

    此时会在当前目录生成临时文件 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识别,我们尽量将这两个参数与 IDE 默认的签名文件内容保持一致。

    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替换成其他名称也是能获得对应签名文件的,我这里没有去验证这个猜想。

    相关文章

      网友评论

          本文标题:MTK平台如何用Android源码生成签名文件

          本文链接:https://www.haomeiwen.com/subject/ejzcrxtx.html