让Android Studio支持系统签名(证书)
有時候,我們開發的apk需要用到系統權限,需要在AndroidManifest.xml中添加共享系統進程屬性:
?
android:sharedUserId="android.uid.system" android:sharedUserId="android.uid.shared" android:sharedUserId="android.media"這時候apk的簽名就需要是系統簽名(platform、shared或media)才能正常使用。
----------------------------------------------------------------------------------------------
常用系統簽名方式
1、Android源碼環境下簽名
這種方式比較麻煩,你需要有編譯過的源碼環境,并按如下步驟:
1、拷貝App源碼到Android源碼的packages/apps/目錄下,且App源碼是普通(Eclipse)格式的
2、配置Android.mk,在其中添加
LOCAL_CERTIFICATE := platform 或 shared 或 media
3、使用mm?-B?編譯App,生成的apk即系統簽名
-----------------------------------------------------------------------------------------------
2、手動重新簽名
這種方式比在源碼環境下簽名簡單,App可以在Eclipse或Android Studio下編譯,然后給apk重新簽名即可。
但這種方式在頻繁調試的時候比較痛苦,即使寫成腳本,也需要重復一樣的操作。
2.1、相關文件
platform.x509.pem、platform.pk8、signapk.jar
文件位置
platform.x509.pem、platform.pk8:
../build/target/product/security
signapk.jar:
../out/host/linux-x86/framework
signapk源碼路徑:
../build/tools/signapk
2.2、簽名命令
java -jar signapk.jar platform.x509.pem platform.pk8 old.apk new.apk
步驟
1、將相關文件及源apk文件置于同一路徑下
2、檢查源apk包,去掉META-INF/CERT.SF?和?META-INF/CERT.RSA?文件
3、執行簽名命令即可
-----------------------------------------------------------------------------------------------
3、Android Studio系統簽名
讓Android Studio集成系統簽名,需要用到一個工具keytool-importkeypair,詳見下文。
這個工具的作用是將系統簽名的相關信息導入到已有的簽名文件里。可從這里下載。
工具的使用方法可以通過--help或README.textile來尋求幫助。
相關文件
platform.x509.pem、platform.pk8、keytool-importkeypair、demo.jks、signature.sh
我的做法是在App根目錄新建Signature文件夾專門存放簽名相關文件。
步驟
1、生成demo.jks簽名文件
相關文件
platform.x509.pem、platform.pk8、keytool-importkeypair、demo.jks、signature.sh
我的做法是在App根目錄新建Signature文件夾專門存放簽名相關文件。
步驟
生成demo.jks簽名文件
在這里選擇簽名的文件
圖片上的密碼要和命令的密碼對應,別名Alias也要對應起來,還有路徑,其他信息是次要的
這個步驟后,可以在對應的位置生成一個demo.jks文件
2、編寫簽名腳本signature.sh,利用步驟1生成的文件生成新的文件
內容如下:
注意!!一定要把這個文件放到linux環境下編譯,在windows下編譯目前我還沒測試成功,我相信坐簽名的同學一定有linux編譯環境
$ sudo chmod a+x signature.sh
執行腳本:
$ ./signature.sh
注意!!這時候會生成新的demo.jks,把這個demo.jks替換掉原來的那個才可以。
?
3、配置builde.gradle
在android區域下(與defaultConfig同級)添加配置:
注意 !!Android studio有兩個builde.gradle,要在有Android關鍵字的那個添加,別搞錯了。
這樣debug或release apk就帶有系統簽名了。
如果想直接Run app就是release版且帶系統簽名的apk,還需修改:
修改buildTypes:
buildTypes {release {minifyEnabled falseproguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'signingConfig signingConfigs.release} }這樣直接Run app就是帶系統簽名的release版apk了。
如果對你有用,請關注微信公眾號【嵌入式Linux】
參考:Android Studio自動生成帶系統簽名的apk
總結
以上是生活随笔為你收集整理的让Android Studio支持系统签名(证书)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 验证码--代码
- 下一篇: 解读Android 4.0 Camera