首先下載keytool工具,地址
https://github.com/getfatday/keytool-importkeypair
我的是放在桌面下,目錄如下。
C:\Users\lei\Desktop\keytool-importkeypair-master\keytool-importkeypair-master

由于這個(gè)工具需要在linux中運(yùn)行,但是我沒(méi)有那個(gè)環(huán)境,因此使用MinGW代替。
打開(kāi) D:\MinGW\msys\1.0目錄下的msys.bat,進(jìn)入環(huán)境(類似win中的cmd)。
然后輸入命令進(jìn)入keytool-importkeypair目錄下。
cd C:/Users/lei/Desktop/keytool-importkeypair-master/keytool-importkeypair-master
注意:這里命令中的文件目錄用的是反斜杠不是斜杠。用的是斜杠的話在MinGW環(huán)境中就無(wú)法進(jìn)入目錄。會(huì)提示No such file or directory。

windows:
C:\Users\lei\Desktop\keytool-importkeypair-master\keytool-importkeypair-master
MinGW:
C:/Users/lei/Desktop/keytool-importkeypair-master/keytool-importkeypair-master
如下圖所示,進(jìn)入了keytool-importkeypair-master中。

然后將platform.x509.pem和platform.pk8 copy至keytool-importkeypair-master中(platform.x509.pem和platform.pk8就是編譯系統(tǒng)的時(shí)候security文件夾下的文件,需要廠商提供)。


至此,準(zhǔn)備工作完成,可以生成keystore文件了。
在MinGw中執(zhí)行命令。
./keytool-importkeypair -k ./platform.keystore -p android -pk8 platform.pk8 -cert platform.x509.pem -alias platform
-k 表示要生成的 keystore 文件的名字,這里命名為 platform.keystore
-p 表示要生成的 keystore 的密碼,這里是 android
-pk8 表示要導(dǎo)入的 platform.pk8 文件
-cert 表示要導(dǎo)入的platform.x509.pem
-alias 表示給生成的 platform.keystore 取一個(gè)別名,這是命名為 platform

然后platform.keystore文件就生成了。

這個(gè)文件就是android studio需要的簽名文件,稍后在build.gradle中進(jìn)行配置。
我把platform.keystore文件放到C:\test目錄下了。因此storeFile file是C:\test\platform.keystore。
android {
................
defaultConfig {
................
}
signingConfigs {
debug {
storeFile file('C:\\test\\platform.keystore')
storePassword 'android'
keyAlias 'platform'
keyPassword 'android'
}
release {
storeFile file('C:\\test\\platform.keystore')
storePassword 'android'
keyAlias 'platform'
keyPassword 'android'
}
}
buildTypes {
................
}
}
dependencies {
..............
}
注意:signingConfigs 必須放在buildTypes 之前,否則在后續(xù)設(shè)置了buildTypes 之后,gradle會(huì)報(bào)錯(cuò)。
Could not get unknown property 'release' for SigningConfig container
然后還需要在project structure中配置一下buildTypes,這樣run app后安裝的就是帶簽名的。

設(shè)置buildTypes中debug的signing config為debug,release的signing config為release。


這樣就不用每次使用編譯生成apk然后使用signapk.jar生成帶系統(tǒng)簽名的apk了。
最后記得在AndroidManifest.xml文件中的對(duì)應(yīng)位置加上 android:sharedUserId="android.uid.system"。
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example......"
android:sharedUserId="android.uid.system">
.....
.....
</manifest>
這樣就是系統(tǒng)級(jí)權(quán)限的apk了。
參考鏈接:
讓Android Studio支持系統(tǒng)簽名(證書(shū))
http://m.itdecent.cn/p/47265c8899b5
編譯錯(cuò)誤:Could not get unknown property 'release' for SigningConfig container