溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

Android系統(tǒng)如何制作自定義簽名

發(fā)布時(shí)間:2021-05-07 14:55:10 來(lái)源:億速云 閱讀:460 作者:小新 欄目:移動(dòng)開(kāi)發(fā)

這篇文章給大家分享的是有關(guān)Android系統(tǒng)如何制作自定義簽名的內(nèi)容。小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧。

Android是什么

Android是一種基于Linux內(nèi)核的自由及開(kāi)放源代碼的操作系統(tǒng),主要使用于移動(dòng)設(shè)備,如智能手機(jī)和平板電腦,由美國(guó)Google公司和開(kāi)放手機(jī)聯(lián)盟領(lǐng)導(dǎo)及開(kāi)發(fā)。

1、簡(jiǎn)介

應(yīng)客戶(hù)要求為了是特殊定制的系統(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簽名這種類(lèi)型的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)行簽名,需要生成四種類(lèi)型的key文件。

a) releasekey

b) media

c) shared

d) platform

我們就拿platform 為例簡(jiǎn)單介紹下生成過(guò)程。

1)進(jìn)入/Android源碼根目錄/development/tools目錄。

Android系統(tǒng)如何制作自定義簽名

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'

Android系統(tǒng)如何制作自定義簽名

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中類(lèi)型的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é)果如下:

Android系統(tǒng)如何制作自定義簽名

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/目錄

Android系統(tǒng)如何制作自定義簽名

3.修改external/sepolicy/keys.conf

Android系統(tǒng)如何制作自定義簽名

補(bǔ)充知識(shí):test.pk8 和 test.x509.pem轉(zhuǎn)換為 android studio 使用的 keystore 文件

我就廢話(huà)不多說(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

感謝各位的閱讀!關(guān)于“Android系統(tǒng)如何制作自定義簽名”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI