系統默認的四種簽名類型:
四組默認簽名供Android.mk在編譯APK使用:
1、testkey:普通APK,默認情況下使用。
2、platform:該APK完成一些系統的核心功能。經過對系統中存在的文件夾的訪問測試,這種方式編譯出來的APK所在進程的UID爲system。
3、shared:該APK需要和home/contacts進程共享數據。
4、media:該APK是media/download系統中的一環。
應用程序的Android.mk中有一個LOCAL_CERTIFICATE字段,由它指定用哪個key簽名,未指定的默認用testkey.
系統默認的四種簽名類型文件的位置:
$ls build/target/product/security/
Android.mk platform.pk8 shared.pk8 testkey.x509.pem verity.x509.pem
media.pk8 platform.x509.pem shared.x509.pem verity_key
media.x509.pem README testkey.pk8 verity.pk8
pk8的是對應簽名的私鑰,x509的包含了公鑰的證書,verify.xxx的是用於啓動時判別system.img是否被修改過的(pk8/x509同前,verify_key是對system.img進行dm venity的公鑰)。
關於verified boot,可參考:http://luomingmao.com/2016/08/29/Verified-Boot/
簽名命令:platform爲例
java -jar signapk.jar platform.x509.pem platform.pk8 old.apk new.apk
其中 signapk.jar : out/host\linux-x86\framework/ 下