pk8/x509.pem轉換爲keystore

背景

咱們都知道AndroidManifest.xml配置以下屬性html

android:sharedUserId="android.uid.system"複製代碼

直接運行是跑不起來的,咱們只有拿到了平臺的pk8/x509.pem文件經過以下簽名命令:java

java -jar signapk.jar platform.x509.pem platform.pk8 old.apk [new].apk
android

才能得到與android.uid.system相同的權限,才能調用系統api,這種狀況會給開發帶來很大的困擾,代碼調試不方便,影響開發效率。web

如今有一種方法將pk8/x509.pem導入到keystore,而後咱們運行代碼的時候使用keystore進行簽名就能夠得到與android.uid.system相同的權限,不須要再次進行系統簽名windows

環境準備

以windows爲例首先須要下載openssl ,根據本身的 實際狀況選擇版本api


下載後直接安裝,安裝完成環境變量Path只想到bin目錄,以下圖:bash



導入到keystore

第一步

cd到pk8以及x509.pem文件的目錄執行以下命令,把platform.pk8生成了.pem 文件:ui

openssl pkcs8 -in platform.pk8 -inform DER -outform PEM -out platform.priv.pem -nocrypt
spa

其中platform.pk8爲pk8文件名, platform.priv.pem爲.pem 文件文件名能夠隨意修改,執行成功後,會在目錄下生成pem文件以下:debug


第二步

執行以下命令,生成pkcs12格式的密鑰文件,生成platform.pk12文件,最後的android是keystore的alias,這裏默認爲android_box, platform.pk12是pk12文件名,須要輸入兩次密碼,咱們這裏默認爲android_box

openssl pkcs12 -export -in platform.x509.pem -inkey platform.priv.pem -out platform.pk12 -name android_box

須要輸入兩次密碼,咱們這裏默認爲android_box


會在目錄下生成pk12文件,以下圖:



第三步

執行以下命令生成keystore文件,

keytool -importkeystore -destkeystore platform.keystore -srckeystore platform.pk12 -srcstoretype PKCS12 -srcstorepass android_box -alias android_box

platform.keystore是生成的keystore文件,也能夠是jks,-srcstorepass後面的android_box 是keystore的密碼,-alias 後面的android_box是keystore的alias,這個須要與第二步中的alias一致,不然報錯以下:


須要輸入第二步中生成pk12的password,不然報錯以下圖


正確輸入 密碼後,keystore文件生成好了,接下咱們在項目中不管是debug仍是release均可以得到與android.uid.system相同的權限。
相關文章
相關標籤/搜索