在做 Android 系統定製時,開發自家的 APP,可能會需要使用到一些特殊的權限,系統相關的 API 等等。因此,APP 自身需要有系統簽名才能使用這些權限和 API。那我們要怎麼獲取系統簽名,並給 APP 簽上系統簽名呢?下面講解三種簽名方式。
第一種:系統編譯簽名
在相應 APP 工程目錄的mk文件中,添加下面這句話即可:
...
LOCAL_CERTIFICATE := platform
...
第二種:signapk 簽名
signapk 簽名方式就是把一個 apk 用新的簽名文件重新簽名生成一個新的簽名 apk。
java -jar signapk.jar platform.x509.pem platform.pk8 *.apk *new.apk
其中,signapk.jar,platform.x509.pem 和 platform.pk8保存在系統中的路徑如下:
/build/make/target/product/security/platform.x509.pem
/build/make/target/product/security/platform.pk8
/out/host/linux-x86/framework/signapk.jar
第三種:AndroidStudio 簽名
- 下載 keytool-importkeypair
下載 keytool-importkeypair 這個腳本文件。
- 生成簽名文件
在 Linux 環境使用如下命令:
keytool-importkeypair -k platform.keystore -p android -pk8 platform.pk8 -cert platform.x509.pem -alias platform
執行上面命令後,就會生成一個 platform.keystore 的系統簽名文件。有了這個系統簽名文件後,我們就可以用 AndroidStudio 來簽名啦!找到 APP 的 build.gradle,並添加如下代碼,就可以在我們調試的時候自帶系統簽名啦,不用再做額外的動作省時省力。
- 修改 build.gradle
build.gradle
signingConfigs {
platform {
//簽名文件的路徑
storeFile file('***\\platform.keystore')
storePassword 'android'
keyAlias = 'platform'
keyPassword 'android'
}
}
buildTypes {
...
debug {
signingConfig signingConfigs.platform
}
}
後面我們直接 run 就可以生成帶系統簽名的 apk 啦!
總結
前面講了三種簽名方法,前面兩種都不方便我們平時調試的時候使用,如果要調試下 APP,要麼編譯下源碼,要麼生成APK,在用命令的方式重新簽名,都不方便,且費時。通過 AndroidStudio 直接簽名的方式,可以爲我們開發系統級應用節省不少時間。所以,大家在做系統級應用開發的時候,能用第三種,最好還是使用第三種。