Android系统制作自定义签名的例子

 更新时间:2020年03月19日 11:09:25   作者:FeiPeng_  
这篇文章主要介绍了Android系统制作自定义签名的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

1、简介

应客户要求为了是特殊定制的系统更具安全,系统ROM需要使用自己定义的签名,还有一些特殊的场景也会更改系统的签名比如在过cts认证测试的时候也会修改平台签名才能测试通过关于签名的问题。

这是因为平台默认的是test签名.网上大多说签名的都是app签名而非平台签名。

test签名这种类型的key只适用于开发阶段,而且这种秘钥是公开的,谁都可以使用。

当发布一款android产品,就需要另外给整个系统签个名,防止被别人盗用。这种系统就是release版本的Android系统。

这里就简单记录下方法。

2、制作自己的平台release签名

要对Android系统进行签名,需要生成四种类型的key文件。

a) releasekey

b) media

c) shared

d) platform

我们就拿platform 为例简单介绍下生成过程。

1)进入/Android源码根目录/development/tools目录。

2)使用make_key工具生成签名文件

development/tools$ sh make_key platform
‘/C=CN/ST=ShanXi/L=Xi`an/O=Company/OU=Department/CN=banfeipeng/emailAddress=23333869@qq.com'

Enter password for ‘shared' (blank for none; password will be visible): mypassword <——- 设置你的密码
creating shared.pk8 with no password
Generating RSA private key, 2048 bit long modulus
……………………………………..+++
………………+++
e is 65537 (0x10001)

3)make_key的参数介绍

这里要顺便介绍下make_key的参数。第一个参数是要生成key的名字,第二个参数是关于你公司的信息。

key的名字很好理解,就是前面提到的4中类型的key,公司信息的参数比较多,它们的含义如下:

C —> Country Name (2 letter code)

ST —> State or Province Name (full name)

L —> Locality Name (eg, city)

O —> Organization Name (eg, company)

OU —> Organizational Unit Name (eg, section)

CN —> Common Name (eg, your name or your server's hostname)

emailAddress —> Contact email address

4)生成后的结果如下:

5)pk8是生成的私钥,而*.x509.pem是公钥,生成时两者是成对出现的.

3、修改android平台签名为刚才修改的签名文件

1.修改build/core/config.mk将:

ifdef PRODUCT_DEFAULT_DEV_CERTIFICATE
DEFAULT_SYSTEM_DEV_CERTIFICATE := $(PRODUCT_DEFAULT_DEV_CERTIFICATE)
else
DEFAULT_SYSTEM_DEV_CERTIFICATE := build/target/product/security/testkey
endif

修改为:

ifdef PRODUCT_DEFAULT_DEV_CERTIFICATE
DEFAULT_SYSTEM_DEV_CERTIFICATE := $(PRODUCT_DEFAULT_DEV_CERTIFICATE)
else
DEFAULT_SYSTEM_DEV_CERTIFICATE := build/target/product/security/XXXreleasekey
endif

2.将上面生成的签名文件放到 build/target/product/security/XXX/目录

3.修改external/sepolicy/keys.conf

补充知识:test.pk8 和 test.x509.pem转换为 android studio 使用的 keystore 文件

我就废话不多说了,还是直接看代码吧!

set in_pk8="F:\chNet\sign_mstar9380\testkey.pk8"
set in_x509_pem="F:\chNet\sign_mstar9380\testkey.x509.pem"

set out_name=out.keystore.testkey
set out_alias="mstar"
set storePassword=12345678
set keyPassword=12345678

set tmp_file1=platform.p12
set tmp_file2=testkey.pem

set openssl="D:\Program Files\Git\usr\bin\openssl.exe"
set keytool="C:\Program Files\Java\jre1.8.0_191\bin\keytool.exe"

::使用 open ssl 将pk8 解密为 pem 文件, 此时生成一个testkey.pem 文件
%openssl% pkcs8 -inform DER -nocrypt -in %in_pk8% -out %tmp_file2%

::将两个pem 文件导入platform.p12文件中,
::并设置 别名 testkey 和keypass 密码:12345678 (别名和密码可自定义)会新生成 platform.p12
%openssl% pkcs12 -export -in %in_x509_pem% -inkey %tmp_file2% -out %tmp_file1% -password pass:%keyPassword% -name %out_alias%

::使用keytool 将之前生成的platform.p12导入 testkey.jks 签名中,并设置storepass密码(12345678)
::需要正确提供keypass 密码
::此时即生成了需要的testkey.jks 签名文件
%keytool% -importkeystore -deststorepass %storePassword% -destkeystore %out_name% -srckeystore %tmp_file1% -srcstoretype PKCS12 -srcstorepass %keyPassword%

::删除临时文件
del %tmp_file1%
del %tmp_file2%

::查看生成的 签名信息
%keytool% -list -v -keystore %out_name%
pause

以上这篇Android系统制作自定义签名的例子就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Android通话默认打开扬声器的方法

    Android通话默认打开扬声器的方法

    这篇文章主要介绍了Android通话默认打开扬声器的方法.小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-08-08
  • Android实现2048小游戏

    Android实现2048小游戏

    这篇文章主要为大家介绍了Android实现2048小游戏的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-01-01
  • Android自定义选项卡切换效果

    Android自定义选项卡切换效果

    这篇文章主要为大家详细介绍了Android自定义选项卡切换效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-06-06
  • Android开发之RecyclerView控件

    Android开发之RecyclerView控件

    本文给大家介绍的是Android开发中常用的RecyclerView控件的使用方法以及简单的特性,有需要的小伙伴可以参考下
    2016-02-02
  • Android PicSelector图片选择器小功能

    Android PicSelector图片选择器小功能

    这篇文章主要为大家详细介绍了Android PicSelector图片选择器小功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • Android Scroller完全解析

    Android Scroller完全解析

    这篇文章主要为大家详细介绍了Android Scroller源码,区分scrollTo()和scrollBy(),感兴趣的小伙伴们可以参考一下
    2016-10-10
  • Android使用webView加载html页面的详细步骤

    Android使用webView加载html页面的详细步骤

    Android WebView是Android开发中提供的一种用于显示网页内容的组件,它可以加载网页的url链接,也可以加载本地的html文件,下面这篇文章主要给大家介绍了关于Android使用webView加载html页面的相关资料,需要的朋友可以参考下
    2024-06-06
  • Android获取当前手机网络类型(2g、3g、4g、wifi)以及手机型号、版本号代码

    Android获取当前手机网络类型(2g、3g、4g、wifi)以及手机型号、版本号代码

    这篇文章主要介绍了Android获取当前手机网络类型(2g、3g、4g、wifi)以及手机型号、版本号的相关资料,需要的朋友可以参考下
    2016-03-03
  • Android一次性退出多个Activity的方法

    Android一次性退出多个Activity的方法

    这篇文章主要介绍了Android一次性退出多个Activity的方法,结合实例形式分析了Activity的创建,继承,遍历与关闭等实现步骤与相关技巧,需要的朋友可以参考下
    2016-02-02
  • 解决Android-RecyclerView列表倒计时错乱问题

    解决Android-RecyclerView列表倒计时错乱问题

    这篇文章主要介绍了解决Android-RecyclerView列表倒计时错乱问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-08-08

最新评论