1. 程式人生 > >Android給app簽上系統級簽名

Android給app簽上系統級簽名

【轉自】http://blog.csdn.net/qqxiaoqiang1573/article/details/52252843

簡介

我們在做系統級的app開發時,肯定會遇到的問題就是給app簽名了,像這種系統級的app開發,Android系統是沒有直接給出keystore的簽名檔案的,那麼我們要怎麼給自己的app簽上系統級簽名呢?下面介紹兩種方法。

前提

要做系統簽名必須要拿到的兩個檔案platform.x509.pem,platform.pk8它們存放在系統的/build/target/product/security/目錄下。拿到這兩個檔案後就可以做我們的app簽名了。系統下的其他簽名類似,大家可以以此類推,舉一反三。

CMD命令方式

java -jar signapk.jar platform.x509.pem platform.pk8 XXX.apk XXXNew.apk
  • 1
  • 1

這樣我們生成的app就是有系統簽名的app了,但是我們每次都要使用命令的方式來執行給我們開發除錯的app簽名是不是很煩,有沒有更好的方式呢?下面就重點說下keysotre的方式。

keystore方式

最前面我們說了,系統沒有提供keystore的簽名給我們,那這個keystore是怎麼來的?看來只有自己動手生成這個檔案了,來看我們怎麼製作這個keystore吧。 
環境:Linux 
檔案:platform.x509.pem,platform.pk8 
命令:

openssl pkcs8 -inform DER -nocrypt -in platform.pk8 -out platform.pem
  • 1
  • 1
openssl pkcs12 -export -in platform.x509.pem -out platform.p12 -inkey platform.pem -password pass:android -name androiddebugkey`
  • 1
  • 1
keytool -importkeystore -deststorepass android -destkeystore ./platform.keystore -srckeystore platform.
p12 -srcstoretype PKCS12 -srcstorepass android
  • 1
  • 1

依次執行完這3條命令後我們的簽名檔案platform.keystore就生成啦,接下來要做的事情就是匯出app的時候使用這個簽名就好了。nice~~~ 
這樣一條一條命令的輸入是不是很麻煩,並且可能會忘記部分引數的拼寫,所以這裡就要用到shell指令碼了,根據這3條命令我們可以寫一個小指令碼,完成簽名的生成。下面來看下個人寫的一個指令碼吧。這樣就一勞永逸的解決了生成簽名會忘記部分引數的問題了。 
generatesignature.sh

#!/bin/sh

myFile="platform.pem"

if [ -f $myFile ]
then
        echo "存在platform.pem platform.p12 platform.keystore,先刪除!"
        rm -f platform.pem platform.p12 platform.keystore
fi

echo "開始執行!!"
openssl pkcs8 -inform DER -nocrypt -in platform.pk8 -out platform.pem
echo "生成 platform.pem"

openssl pkcs12 -export -in platform.x509.pem -out platform.p12 -inkey platform.pem -password pass:android -name androiddebugkey
echo "生成 platform.p12"

keytool -importkeystore -deststorepass android -destkeystore ./platform.keystore -srckeystore platform.p12 -srcstoretype PKCS12 -srcstorepass android
echo "生成  platform.keystore 成功"
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

注意:這裡需要特別注意的地方就是,我這個kestore的生成是在Linux環境製作的,所以在windows環境下的朋友可能需要自己想點辦法了。

參考文章