Android Studio普通应用-》系统应用
在android framework开发过程中,通常使用系统应用在验证某些功能,(系统功能权限大,可以通过反射获取hide接口,便于功能调试)。
一般做法,是将AndroidStudio打包的apk,使用系统签名,编译到系统,使其获取到system权限,验证功能。 但是这个过程比较复杂,流程繁琐,耗时。不建议采用。
目前推荐,使用系统签名对jks进行签名,然后直接使用AdnroidStudio install即可。现大致流程介绍如下
Android Studio生成jks签名文件
jks(java keystore)
字面意思可以理解为java的密钥库,是一个用来存放密钥和证书的仓库。而keytool就是密钥和证书的管理工具,它把key(密钥)和certificate(证书)存放在一个叫keystore的文件中。
打开android studio软件,点击上方Build - Generate Signed Bundle / APK。选择APK选项,执行下一步
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 key0alias: 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”>
来源地址:https://blog.csdn.net/weixin_45080805/article/details/129118381