Android系統(tǒng)制作自定義簽名的例子
1、簡(jiǎn)介
應(yīng)客戶要求為了是特殊定制的系統(tǒng)更具安全,系統(tǒng)ROM需要使用自己定義的簽名,還有一些特殊的場(chǎng)景也會(huì)更改系統(tǒng)的簽名比如在過(guò)cts認(rèn)證測(cè)試的時(shí)候也會(huì)修改平臺(tái)簽名才能測(cè)試通過(guò)關(guān)于簽名的問(wèn)題。
這是因?yàn)槠脚_(tái)默認(rèn)的是test簽名.網(wǎng)上大多說(shuō)簽名的都是app簽名而非平臺(tái)簽名。
test簽名這種類型的key只適用于開(kāi)發(fā)階段,而且這種秘鑰是公開(kāi)的,誰(shuí)都可以使用。
當(dāng)發(fā)布一款android產(chǎn)品,就需要另外給整個(gè)系統(tǒng)簽個(gè)名,防止被別人盜用。這種系統(tǒng)就是release版本的Android系統(tǒng)。
這里就簡(jiǎn)單記錄下方法。
2、制作自己的平臺(tái)release簽名
要對(duì)Android系統(tǒng)進(jìn)行簽名,需要生成四種類型的key文件。
a) releasekey
b) media
c) shared
d) platform
我們就拿platform 為例簡(jiǎn)單介紹下生成過(guò)程。
1)進(jìn)入/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 <——- 設(shè)置你的密碼
creating shared.pk8 with no password
Generating RSA private key, 2048 bit long modulus
……………………………………..+++
………………+++
e is 65537 (0x10001)
3)make_key的參數(shù)介紹
這里要順便介紹下make_key的參數(shù)。第一個(gè)參數(shù)是要生成key的名字,第二個(gè)參數(shù)是關(guān)于你公司的信息。
key的名字很好理解,就是前面提到的4中類型的key,公司信息的參數(shù)比較多,它們的含義如下:
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)生成后的結(jié)果如下:

5)pk8是生成的私鑰,而*.x509.pem是公鑰,生成時(shí)兩者是成對(duì)出現(xiàn)的.
3、修改android平臺(tái)簽名為剛才修改的簽名文件
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

補(bǔ)充知識(shí):test.pk8 和 test.x509.pem轉(zhuǎn)換為 android studio 使用的 keystore 文件
我就廢話不多說(shuō)了,還是直接看代碼吧!
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 文件, 此時(shí)生成一個(gè)testkey.pem 文件 %openssl% pkcs8 -inform DER -nocrypt -in %in_pk8% -out %tmp_file2% ::將兩個(gè)pem 文件導(dǎo)入platform.p12文件中, ::并設(shè)置 別名 testkey 和keypass 密碼:12345678 (別名和密碼可自定義)會(huì)新生成 platform.p12 %openssl% pkcs12 -export -in %in_x509_pem% -inkey %tmp_file2% -out %tmp_file1% -password pass:%keyPassword% -name %out_alias% ::使用keytool 將之前生成的platform.p12導(dǎo)入 testkey.jks 簽名中,并設(shè)置storepass密碼(12345678) ::需要正確提供keypass 密碼 ::此時(shí)即生成了需要的testkey.jks 簽名文件 %keytool% -importkeystore -deststorepass %storePassword% -destkeystore %out_name% -srckeystore %tmp_file1% -srcstoretype PKCS12 -srcstorepass %keyPassword% ::刪除臨時(shí)文件 del %tmp_file1% del %tmp_file2% ::查看生成的 簽名信息 %keytool% -list -v -keystore %out_name% pause
以上這篇Android系統(tǒng)制作自定義簽名的例子就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- Android開(kāi)發(fā)簽名知識(shí)梳理總結(jié)
- Android studio導(dǎo)出APP測(cè)試包和構(gòu)建正式簽名包
- Android Studio簽名打包的兩種方式(圖文教程)
- Android實(shí)現(xiàn)簽名涂鴉手寫(xiě)板
- Android 自定義View手寫(xiě)簽名并保存圖片功能
- Android studio設(shè)置指定的簽名文件教程
- Android 項(xiàng)目正式簽名打包教程分享
- 使用Android Studio實(shí)現(xiàn)為系統(tǒng)級(jí)的app簽名
- Android 運(yùn)用@JvmName解決函數(shù)簽名沖突問(wèn)題詳解
相關(guān)文章
RecyclerView通過(guò)GridLayoutManager實(shí)現(xiàn)多樣式布局的示例
本篇文章主要介紹了RecyclerView通過(guò)GridLayoutManager實(shí)現(xiàn)多樣式布局的示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-12-12
輕松實(shí)現(xiàn)Android3D效果通俗易懂
前幾天有粉絲要求計(jì)蒙寫(xiě)一個(gè)3d效果的簡(jiǎn)單教程,其實(shí)這個(gè)在Android官方demo中是有的,可能對(duì)于新手而言看不太明白,于是根據(jù)本人自己的理解來(lái)寫(xiě)一個(gè)教程,并改成粉絲要求的樣子2021-08-08
Android倒計(jì)時(shí)神器(CountDownTimer)
這篇文章主要為大家詳細(xì)介紹了Android倒計(jì)時(shí)神器CountDownTimer,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-01-01
Android性能優(yōu)化之RecyclerView分頁(yè)加載組件功能詳解
這篇文章主要為大家介紹了Android性能優(yōu)化之RecyclerView分頁(yè)加載組件功能詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09
揭秘在ListView等AdapterView上動(dòng)態(tài)添加刪除項(xiàng)的陷阱
今天遇到這么個(gè)需求,需要在運(yùn)行時(shí)動(dòng)態(tài)添加ListView的item,看起來(lái)很簡(jiǎn)單,實(shí)際操作過(guò)程中卻遇到了麻煩,下面揭秘在ListView等AdapterView上動(dòng)態(tài)添加刪除項(xiàng)的陷阱2016-04-04
Android 使用jQuery實(shí)現(xiàn)item點(diǎn)擊顯示或隱藏的特效的示例
本篇文章主要介紹了Android 使用jQuery實(shí)現(xiàn)item點(diǎn)擊顯示或隱藏的特效的示例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-03-03
Android Studio 4.0 正式發(fā)布在Ubuntu 20.04中安裝的方法
這篇文章主要介紹了Android Studio 4.0 正式發(fā)布如何在Ubuntu 20.04中安裝,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-06-06

