Android系统签名简介
apk的签名,简单说开发者可以通过签名 对应用进行标识和更新。包名在一个设备上是唯一的,这样可以避免被相同包名应用随意覆盖安装。这是一个非常重要的安全功能。
系统中的签名文件,也是对系统中应用进行签名,编译应用是可以指定签名类型。
下面介绍的是Android系统中的签名相关内容。
Android系统中的主要签名文件
media.pk8,media.x509.pem;platform.pk8,platform.x509.pem;releasekey.pk8,releasekey.x509.pem;shared.pk8,shared.x509.pem;testkey.pk8,testkey.x509.pem。
Android系统中的签名文件的路径
build/target/product/security/目录下。
编译时签名文件的配置
在Android.mk通过设置LOCAL_CERTIFICATE实现。如:LOCAL_CERTIFICATE := platform即选择platform来签名。
注:预置无源码的apk应用时,很多时候仍然使用原本第三方签名,LOCAL_CERTIFICATE := PRESIGNED。
.pk8和.x509.pem的区别
.pk8就是私钥文件,用于对apk进行签名。这个私钥需要保密保存,不能公开。
.x509.pem是证书文件,相当于公钥。这个可以公开,主要用于验证某个apk是否由相应的私钥签名。
系统不同签名文件的区别
简介:
sharedUserId
每个apk或文件,系统都会分配属于自己的统一的用户ID(UID),创建沙箱保证其他应用的影响或影响其他应用。如:一般应用只能访问自己包名下的文件(/data/data/pkgname),不能反问其他包名下的,其他应用也访问不了自己包名下的文件。
sharedUserId,拥有同一user id的应用 之间就可以共享数据库和文件,相互访问。这些应用可以运行在同一进程,也可以运行不同进程。
sharedUserId与签名文件
只有拥有相同sharedUserId标签的,且拥有相同签名的 应用才能分配相同的用户ID,实现数据共享。如果仅仅拥有相同sharedUserId标签,是无法确保安全的,也很容易被非法利用。
系统中5类签名文件说明
- platform:平台的核心应用签名,签名的apk是完成系统的核心功能。这些apk所在的进程UID是system。manifest节点中有添加android:sharedUserId="android.uid.system"。
- media: 这个签名的apk是media/download的一部分。manifest节点中有添加android:sharedUserId="android.media"。
- shared:这个签名的apk可以和home/contacts进程共享数据。manifest节点中有添加android:sharedUserId="android.uid.shared"。
- testkey/releasekey:平台默认key。在编译中未指定LOCAL_CERTIFICATE的,默认是用testkey。因为testkey是公开的,任何人都可以获取,不安全,所以一般使用 自己创建releasekey作为默认key。
修改平台默认签名
- build/core/config.mk路径下,修改下面变量为:
DEFAULT_SYSTEM_DEV_CERTIFICATE := build/target/product/security/releasekey
或者使用宏控选择。
- system/sepolicy/private/keys.conf 和 system/sepolicy/prebuilts/api/{apilevel}/private/keys.conf下,修改:
-ENG : $DEFAULT_SYSTEM_DEV_CERTIFICATE/testkey.x509.pem
-USER : $DEFAULT_SYSTEM_DEV_CERTIFICATE/testkey.x509.pem
-USERDEBUG : $DEFAULT_SYSTEM_DEV_CERTIFICATE/testkey.x509.pem
+ENG : $DEFAULT_SYSTEM_DEV_CERTIFICATE/releasekey.x509.pem
+USER : $DEFAULT_SYSTEM_DEV_CERTIFICATE/releasekey.x509.pem
+USERDEBUG : $DEFAULT_SYSTEM_DEV_CERTIFICATE/releasekey.x509.pem
- build/core/core/Makefile下修改变量为:
BUILD_VERSION_TAGS = release-keys
或者使用宏控选择。
平台签名的创建
在工程目录下执行下面命令就可以生成一套platform,shared,media,releasekey签名文件:
subject='/C=US/ST=California/L=Mountain View/O=Android/OU=Android/CN=Android/emailAddress=android@android.com'
mkdir ~/.android-certs
for x in releasekey platform shared media; do \
./development/tools/make_key ~/.android-certs/$x "$subject"; \
done
注:
- 生成是用工程中的./development/tools/make_key脚本,依次生成
- subject中参数的含义:
C ---> Country Name (2 letter code)
ST ---> State or Province Name (full name)
L ---> Locality Name (eg, city)
O ---> Organization Name (eg, company)
OU ---> Organizational Unit Name (eg, section)
CN ---> Common Name (eg, your name or your server's hostname)
emailAddress ---> Contact email address
- 生成签名文件过程,一般按回车,若输入密码后面签名apk需要手动输入。
查看签名apk的签名信息
keytool -printcert -jarfile xxx.apk
使用这个命令能够查看apk所使用签名的相关信息,如下图所示
使用系统签名文件直接给apk签名
java -Djava.library.path=. -jar signapk.jar xxx.x509.pem xxx.pk8 beforesign.apk aftersign.apk
如下示例,
将app-debug.apk使用releasekey签名,签名后的apk名字为app-debug_release.apk。
注意路径,如 signapk.jar路径在out/host/linux-x86/framework/signapk.jar,可以拷贝出来。平台签名文件路径上面已经讲过。如果出现报错,多注意下提示,调整即可。
java -Djava.library.path=. -jar signapk.jar releasekey.x509.pem releasekey.pk8 app-debug.apk app-debug_release.apk
Android系统签名简介相关推荐
- android系统签名app自动更新,【Android 进阶】Apk 使用系统签名
刚入职的时候,固件中 app 需要在源码中编译,不是很理解,为什么不使用 IDE 编译,然后 copy 到 /system/app/*,咨询导师,得到反馈 app 需要使用系统的权限 在 Androi ...
- Android系统签名jks文件
Android Studio普通应用->系统应用 在android framework开发过程中,通常使用系统应用在验证某些功能,(系统功能权限大,可以通过反射获取hide接口,便于功能调试). ...
- Android系统签名生成Studio导入系统keystore
一.Android签名文件简述 为什么要签名? 任何一个安装包都需要有签名.为App签名的本质是说明这个App是我开发的,不是别人.通过签名可以在应用和开发者之间建立可信任的关联. 通过签名,Andr ...
- android 签名报错,Android系统签名报错 no conscrypt_openjdk_jni in java.library.path
1.Android 7.1之前,系统签名如下: java -jar signapk.jar platform.x509.pem platform.pk8 source.apk target.apk 2 ...
- Android系统应用简介
1. 四大组件 Android 系统四大组件分别是活动(Activity).服务(Service).广播接收器(BroadcastReceiver)和内容提供器(Content Provider).其 ...
- android系统签名
1.在系统源码下找到signapk.jar platform.x509.pem platform.pk8三个文件,一般在build或prebuilt目录下 2.在AndroidManifest.xml ...
- Android系统分区简介
Android分区简介 安卓手机和平板一般包括以下分区: /boot /system /recovery /data /cache /misc /sdcard /sd-ext /boot 此分区可以保 ...
- Android系统签名生成,在AndroidStudio中使用
1.首先找到以下文件 build/target/product/security/platform.pk8 build/target/product/security/platform.x509.pe ...
- Android使用keytool-importkeypair生成一个系统签名,只要打包的时候使用该签名,便可以获得系统所有权限
Android系统源码中提供了platform.x509.pem .platform.pk8等签名文件例如: 这个是不能直接在调试的时候使用的,如果要用,需要先转换为android studio调试用 ...
最新文章
- lnmp php编译参数,LAMP、LNMP环境编译参数查询
- 一起谈.NET技术,Silverlight 游戏开发小技巧:动感小菜单
- C#中图片.BYTE[]和base64string的转换
- 【django】配置项目日志【5】
- python拼图_Python实现, 命令行下的拼图游戏
- 用预训练GNN预估点击率有奇效?
- 七天免登录JavaScript实现
- MySQL(8)--- 选择数据库
- 想了解“云+AI”究竟怎么“玩儿”,还要看这里、看这里!
- 面试官:如何设计出骚气的秒杀系统?
- 20200524每日一句
- C语言向文件写入学生信息并读取显示出来
- java 进制转换工具_Java实现的进制转换工具类完整示例
- games101 材质与外观
- 华东师范大学计算机考研信息汇总
- 神经网络与深度学习(邱锡鹏)
- windows主机如何登录阿里云服务器
- python实现23种设计模式
- svn 禁止访问的问题
- CISCO 服务器配置 RAID 指南及安装操作系统
热门文章
- 如何下载python与安装
- c语言实用计算器项目,C语言实现简单计算器小项目
- JavaScript函数定义的几种方式
- 110道Python面试笔试题超强汇总
- stm32 软件怎么设置写保护_STM32 , 写保护问题! (amobbs.com 阿莫电子论坛)
- 欧文分校的计算机科学,有关美国加州大学欧文分校计算机科学专业.pdf
- centos7安装MySQL8以及各种管理工具
- gwr模型用什么做_如何对好文章做信息处理,用好文章摘录模型
- 模仿qq空间评论以及回复
- 基于视频点播上传、多分辨率转码-搭建自己的短视频|教学视频播放系统