前言
一般情況下,我們使用的簽名都是自己生成的Java簽名來編譯APP. 但是,如果需要開發一些特定設備的APP(對權限有更高的要求,需求一些系統基本的權限,比如讓APP可以控制設備的休眠),那就需要編譯系統簽名的APP.
首先你還要明白,APP系統簽名的文件必需是你當前設備的系統簽名文件一致,這種簽名文件只有你自己是Android系統開發才能獲取到(Rom是你自己打包的).
准備工作
- 在github上下載工具 https://github.com/getfatday/keytool-importkeypair
- Android證書文件准備
文件路徑:Android/build/target/product/security,包括platform.pk8和platform.x509.pem
打包系統簽名
生成keystore文件
- 將keytool-importkeypair、platform.pk8和platform.x509.pem文件放在同一個目錄下,執行如下命令,會生成platform.keystore文件:
sh keytool-importkeypair -k ./platform.keystore -p android -pk8 platform.pk8 -cert platform.x509.pem -alias platform
- -p 表示新生成的keystore的密碼是什么,這里為android
- -pk8 表示要導入的pk8文件的名稱,可以包括路徑,pk8文件用來保存private key的,是個私鑰文件。
- -cert 表示要導入的證書文件,和pk8文件在同一個目錄,pem這種文件就是一個X.509的數字證書,里面有用戶的公鑰等信息,是用來解密的,這種文 件格式里面不僅可以存儲數字證書,還能存各種key。(有興趣的可以點擊此了解一下)
- -alias 表示給生成的platform.keystore取一個別名,這個名字只有我們在簽名的時候才用的到,這里我們生成的文件名是platform。這個名字,可以隨便取,但是你自己一定要記住。
AndroidManifest.xml修改
AndroidManifest.xml中添加共享系統進程屬性,如下(三選一):
android:sharedUserId="android.uid.system"
android:sharedUserId="android.uid.shared"
android:sharedUserId="android.media"
在manifest節點中添加
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.y.demoapp" android:sharedUserId="android.uid.system">
打包APP
最后就是按照正常流程打包app了.在菜單欄選擇 Build > Generate Signed Bundler or Apk > 點擊進入菜單后選擇APK > 然后選擇你生成的簽名文件,輸入密碼即可.