摘要:
开发一个带有系统权限的app,或实现系统的某些功能,普通的签名无法实现,就需要对apk进行系统签名。
教程:
一、配置SharedUserId
在manifest文件中加入 android:sharedUserId="android.uid.system",如下
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.cxq.signdemo"
android:sharedUserId="android.uid.system">
此时apk是不能直接在AS(Android Studio)中run的
二、生成普通开发者签名jks文件
AS选择Build -> Generate Signed APK,(新版本的AS是把bundle和apk签名放一起,选择apk即可)。
如果没有的就点击Create New ... 设置密码(如123456)
然后Next -- Finish
三、使用keytool-importkeypair对jks文件引入系统签名
这一步需要下载 keytool-importkeypair 工具,
链接: https://pan.baidu.com/s/1ffClHtRzahJeADwIBo2YqA 提取码: cqhv
把上一部生成的jks文件放到解压后的keytool-importkeypair/keytool-importkeypair目录下,终端执行
./keytool-importkeypair -k [jks文件名] -p [jks的密码] -pk8 platform.pk8 -cert platform.x509.pem -alias [jks的别名]
如:./keytool-importkeypair -k SignDemo.jks -p 123456 -pk8 platform.pk8 -cert platform.x509.pem -alias SignDemo
四、配置gradle(app)
在android区域下(与defaultConfig同级)添加signingConfigs配置,依次填写jks的路径,密码,别名等
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
defaultConfig {
applicationId "com.cxq.signdemo"
minSdkVersion 19
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
signingConfigs {
release {
storeFile file("../signApk/SignDemo.jks")
storePassword '123456'
keyAlias 'SignDemo'
keyPassword '123456'
}
debug {
storeFile file("../signApk/SignDemo.jks")
storePassword '123456'
keyAlias 'SignDemo'
keyPassword '123456'
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug {
testCoverageEnabled = true
signingConfig signingConfigs.debug
}
}
}
结束,直接用AS运行。
转至https://blog.csdn.net/cxq234843654/article/details/51557025