• Android系统签名介绍


    一、签名原理介绍

    apk的签名,简单说开发者可以通过签名 对应用进行标识和更新。包名在一个设备上是唯一的,这样可以避免被相同包名应用随意覆盖安装。这是一个非常重要的安全功能。
    系统中的签名文件,也是对系统中应用进行签名,编译应用是可以指定签名类型

    二、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。

    五、系统不同签名文件的区别

    1. sharedUserId

           每个apk或文件,系统都会分配属于自己的统一的用户ID(UID),创建沙箱保证其他应用的影响或影响其他应用。如:一般应用只能访问自己包名下的文件(/data/data/pkgname),不能反问其他包名下的,其他应用也访问不了自己包名下的文件。
    sharedUserId,拥有同一user id的应用 之间就可以共享数据库和文件,相互访问。这些应用可以运行在同一进程,也可以运行不同进程。

     2、sharedUserId与签名文件

    只有拥有相同sharedUserId标签的,且拥有相同签名的 应用才能分配相同的用户ID,实现数据共享。如果仅仅拥有相同sharedUserId标签,是无法确保安全的,也很容易被非法利用。

    3、系统中五类签名文件说明

    PRESIGNED:仍然使用原本第三方应用签名
    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。

    使用示例,在.mk中增加 LOCAL_CERTIFICATE := PRESIGNED

    注:这里留意一下,如果应用manifest中使用的是android:sharedUserId="android.uid.system",那集成应用到系统时,mk文件中 LOCAL_CERTIFICATE :=platform,要相对应,其他类似

  • 相关阅读:
    关于使用pandas导入excel文件失败,求帮助
    MU editor IDE编辑器 二次开发记录与踩坑
    为Linux初学者答疑解惑
    设计模式---建造者模式
    FlatBuffers 转换数据字节为JSON字符串的格式。
    让AI玩《我的世界》
    第5章 链路层--单元测试--计算机网络
    基于ssm的教师贴心宝管理系统的设计与实现-计算机毕业设计源码
    LODOP.ADD_PRINT_TEXT 参数解释说明
    从零开始学Spring Boot系列-SpringApplication
  • 原文地址:https://blog.csdn.net/banzhuantuqiang/article/details/132872322