时间:2021-05-19
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.testkeyset out_alias="mstar"set storePassword=12345678set keyPassword=12345678set tmp_file1=platform.p12set tmp_file2=testkey.pemset 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系统制作自定义签名的例子就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
前言:前面几篇讲了自定义控件绘制原理Android自定义控件基本原理详解(一),Android自定义控件之自定义属性(二),Android自定义控件之自定义组合
前言:前两篇介绍了自定义控件的基础原理Android自定义控件基本原理详解(一)、Android自定义控件之自定义属性(二)。今天重点介绍一下如何通过自定义组合
本文讲述绘制Android自定义各种图形效果,为自定义控件的入门篇相关视频链接:Android自定义控件系列http://edu.csdn.net/course
Android播放视频,包含系统自带VideoView控件,和自定义VideoView控件,可全屏播放,案例包含了本地视频和网络视频。1:自定义VideoVie
前言在我们的实际应用中,经常需要用到自定义控件,比如自定义圆形头像,自定义计步器等等。但有时我们不仅需要自定义控件,举个例子,FloatingActionBut