网站模板大全,wordpress自定义登陆页面,阿里云免费服务器领取,我在海贼开发app免费在项目开发时#xff0c;如果需要使应用具有系统权限#xff0c;例如可以支持静默安装和卸载APK#xff0c;此时就需要使用系统签名。 常用的系统签名方式包括在ubuntu环境下、手动签名和在AndroidStudio环境配置#xff0c;三种方式中#xff0c;实现最简单的是通过Andro…在项目开发时如果需要使应用具有系统权限例如可以支持静默安装和卸载APK此时就需要使用系统签名。 常用的系统签名方式包括在ubuntu环境下、手动签名和在AndroidStudio环境配置三种方式中实现最简单的是通过AndroidStudo方式该方式的签名实现与正常的APK签名相同唯一不同的就是签名文件是通过系统生成的。 注意无论采用何种签名方式如果想实现具有系统权限的应用在APK生成时都需要在AndroidManifest.xml中配置android:sharedUserId“android.uid.system”如下所示
manifest xmlns:androidhttp://schemas.android.com/apk/res/androidpackagecom.xxxx.xxxxandroid:sharedUserIdandroid.uid.system/manifest1. ubuntu环境编译
该方式需要在安卓源码编译的环境下在将APK打包至安卓系统升级包时需要配置Android.mk文件通过在配置LOCAL_CERTIFICATE 参数时将其设置为PRESIGNED如果需要改APK具有系统权限使用系统签名则需要设置为platform
LOCAL_CERTIFICATE : platform 或 shared 或 media
在设置好 Android.mk 文件后在ubuntu环境下执行系统的编译流程。 如果之前在ubuntu环境下已经执行好了系统的编译流程则可以直接cd到系统的package/apps目录下进入到需要编译的APK文件目录下执行mm指令或在其他目录执行mmm /package/apps/APK所在的文件夹名称。
2.手动签名
手动系统签名与Android的APK重签名不同重签名是之前APK已经签名完成在实际使用时需要更改签名文件例如一些特殊的算法处理对于系统的包名和签名都有绑定操作如更换则无法使用。 手动系统签名是对于通过AndroidStudio的build生成的无签名的APK文件进行手动系统签名操作。具体执行过程如下。
2.1 下载SignApk.jar
首先下载SignApk.jar包如下图所示 如果本地有安卓系统的源码可以直接在本地的build\tools\signapk目录下查找到该jar包。
2.2 查找security文件
拿到系统定制厂商提供的security文件不同编译下生成的security文件内容不同需针对该安卓系统下的编译生成的security文件因此这也限定了该系统签名后的应用只能在该系统下运行在其他系统下运行就不具有系统权限。 在security文件中找到media.pk8和platform.x509.pem两个文件。
2.3 执行系统签名操作
将2.1中的SignApk.jar和2.2中的media.pk8和platform.x509.pem文件一起复制到包含需要签名的APK文件夹中然后执行如下语句
java -jar signapk.jar platform.x509.pem platform.pk8 old.apk new.apk生成的new.apk文件就是系统签名后APK文件。 该方式的操作可参考安卓签名工具SignApk.jar使用教程其已将签名的流程制作成Window下的.exe工具只需一次配置每次点击更换需要签名的文件即可。
3 AndroidStudio方式
通常对于APK的签名文件是通过AndroidStudio的New Key Store方式自定义实现但是如果需要使用系统签名文件需要结合security文件中的media.pk8和platform.x509.pem两个文件通过keytool-importkeypair实现下载成功后将media.pk8和platform.x509.pem两个文件放置在包含 keytool-importkeypair目前下执行以下语句。
./keytool-importkeypair -k ./platform.keystore -p android -pk8 platform.pk8 -cert platform.x509.pem -alias platform需要注意的是
该语句的执行是在ubuntu环境下执行的platform.keystore为系统签名文件android为签名密码platform为签名的别名(alias)
生成系统签名后在AndroidStudio中配置Signing签名信息配置成功后在modle的buid.gradle中可以查看如下配置信息。
signingConfigs {releaseConfig {keyAlias platformkeyPassword androidstoreFile file(.........platform.keystore)//签名文件路径storePassword android}
}4.总结
从以上的分析中可以看出无论三种那种方式的实现都离不开系统源码中的security目录下的media.pk8和platform.x509.pem两个文件该两个文件是保证应用具有系统签名的前提如果使用其他系统的文件则在该系统中无法具有系统权限。 对比以上方法分为具有ubuntu和没有两种环境下。
具有ubuntu的编译环境则使用第一种比较简单第三种生成的系统签名文件可用于其他APK的签名使用在AndroidStudio中配置后方便调试使用不必每次都执行命令行来生成签名后的APK文件。不具有ubuntu的编译环境该方式只能通过第二种方式实现且每次调试使用时都需要替换APK生成新的系统签名后的APK操作比较繁琐。当然在2.3中也提到可借助其他同学制作的小工具方便签名文件的使用。
参考 安卓签名工具SignApk.jar使用教程 让Android Studio支持系统签名 keytool-importkeypair 使用