Android系统签名jks文件

Android Studio普通应用-》系统应用

在android framework开发过程中,通常使用系统应用在验证某些功能,(系统功能权限大,可以通过反射获取hide接口,便于功能调试)。
一般做法,是将AndroidStudio打包的apk,使用系统签名,编译到系统,使其获取到system权限,验证功能。 但是这个过程比较复杂,流程繁琐,耗时。不建议采用。

目前推荐,使用系统签名对jks进行签名,然后直接使用AdnroidStudio install即可。现大致流程介绍如下

Android Studio生成jks签名文件

jks(java keystore)

字面意思可以理解为java的密钥库,是一个用来存放密钥和证书的仓库。而keytool就是密钥和证书的管理工具,它把key(密钥)和certificate(证书)存放在一个叫keystore的文件中。

1、打开android studio软件,点击上方Build - Generate Signed Bundle / APK。选择APK选项,执行下一步
在这里插入图片描述

2、Key store path: 存饭jks签名文件的位置,一般与app同级目录,创建key文件夹,然后将jks文件保存到此处
Key store password : jks文件的密码
Key alias : jks签名文件的别名
Key password :与store password密码一致
在这里插入图片描述

需要记住别名和密码,后面使用系统签名时,会用到。

Android系统对jks签名

cd android/build/target/product/security 将系统签名文件,platform.pk8和platform.x509.pem copy到AndroidStudio key文件目录下,下载keytool-importkeypair签名工具(github可下载)
在这里插入图片描述

然后cd 到key命令下,按照如下指令进行jks签名
// ./keytool-importkeypair -k [jks文件名] -p [jks的密码] -pk8 platform.pk8[私钥] -cert platform.x509.pem[公钥证书] -alias [jks的别名]
//./keytool-importkeypair -k $name -p android -pk8 $keypath/platform.pk8 -cert $keypath/platform.x509.pem -alias key0

alias: key0  密码为123456
例如:./keytool-importkeypair -k key0 -p 123456 -pk8 $keypath/platform.pk8 -cert $keypath/platform.x509.pem -alias key0

此时会使用系统签名文件,对原来生成的jks文件进行签名,此时该签名文件就具备系统权限。

AndroidStudio引用系统签名的文件

重新生成jks系统签名文件之后,需要在app工程目录下的build.gradle中进行引用,按照如下配置

配置签名文件
signingConfigs {
    
    
        release {
    
    
            keyAlias 'key0'
            keyPassword '123456'
            storeFile file('../key/test.jks')
            storePassword '123456'
        }
}
引用签名文件,必须要在release和debug中加入signingConfig signingConfigs.release,才会生效
buildTypes {
    
    
        release {
    
    
            minifyEnabled false
            //zipAlignEnabled true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.release
        }

        debug {
    
    
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.release
        }
    }

此时该应用已经具备系统权限。如果想获取更大的系统权限,需要在Androidmanifest.xml中新增userid, 配置如下
android:sharedUserId=“android.uid.system”>

猜你喜欢

转载自blog.csdn.net/weixin_45080805/article/details/129118381
今日推荐