Android App擁有system權限
在有些Android闆子上,app需要擁有system權限,才能通路硬體資源。
而app擁有system權限的方法很簡單,隻需要修改AndroidManifest.xml檔案,添加共享系統程序屬性:
android:sharedUserId="android.uid.system"
android:sharedUserId="android.uid.shared"
android:sharedUserId="android.media"
但這時候App無法直接安裝到目标闆子上,會提示簽名資訊不對,是以需要對apk進行系統簽名。
系統簽名
系統簽名的方法有很多種
- 把App放到Android源碼中編譯,需要修改Android.mk檔案,而且,App源碼是普通(Eclipse)格式。
- 手動簽名,需要signapk.jar,簽名指令:java -jar signapk.jar ……
- 使用keytool-importkeypair,将簽名資訊導入到keystore中,然後使用xx.jks對apk進行簽名。
因為我們目前一般使用Android Studio開發調試App,而第一種和第二種,開發調試就很麻煩。是以我們采用第三種,使用工具将簽名資訊導入到keystore中,利用Android Studio對apk進行簽名。
相關檔案:
platform.x509.pem、platform.pk8、keytool-importkeypair、demo.jks、signature.sh
platform.x509.pem、platform.pk8從目标闆子的Android源碼中獲得
keytool-importkeypair下載下傳
demo.jks通過Android Studio生成,或者自己原有的即可
signature.sh編寫如下
#!/bin/sh
# 轉換平台簽名指令
./keytool-importkeypair -k demo.jks -p 123456 -pk8 platform.pk8 -cert platform.x509.pem -alias demo
# demo.jks : 簽名檔案
# 123456 : 簽名檔案密碼
# platform.pk8、platform.x509.pem : 系統簽名檔案
# demo : 簽名檔案别名
運作
如下操作需要在Linux環境中。
$ sudo chmod a+x signature.sh
$ ./signature.sh
将重新生成的demo.jks放到相對目錄下面,用Android Studio進行簽名即可。
如果想要更加省事,可以配置builde.gradle
在android區域下(與defaultConfig同級)添加配置:
signingConfigs {
release {
storeFile file("../signature/demo.jks")
storePassword '123456'
keyAlias 'demo'
keyPassword '123456'
}
debug {
storeFile file("../signature/demo.jks")
storePassword '123456'
keyAlias 'demo'
keyPassword '123456'
}
}
參考:https://www.jianshu.com/p/47265c8899b5