关闭 x
IT技术网
    技 采 号
    ITJS.cn - 技术改变世界
    • 实用工具
    • 菜鸟教程
    IT采购网 中国存储网 科技号 CIO智库

    IT技术网

    IT采购网
    • 首页
    • 行业资讯
    • 系统运维
      • 操作系统
        • Windows
        • Linux
        • Mac OS
      • 数据库
        • MySQL
        • Oracle
        • SQL Server
      • 网站建设
    • 人工智能
    • 半导体芯片
    • 笔记本电脑
    • 智能手机
    • 智能汽车
    • 编程语言
    IT技术网 - ITJS.CN
    首页 » 安卓开发 »Android APK签名原理和过程详解

    Android APK签名原理和过程详解

    2014-11-23 00:00:00 出处:陈哈哈的博客
    分享

    在Android 系统中,所有安装 到 系统的应用程序都必有一个数字证书,此数字证书用于标识应用程序的作者和在应用程序之间建立信任关系,假如一个 permission的protectionLevel为signature,那么就只有那些跟该permission所在的程序拥有同一个数字证书的应 用程序才能取得该权限。Android使用Java的数字证书相关的机制来 给apk加盖数字证书,要理解android的数字证书,需要先了解以下数字证书的概念和java的数字证书机制。Android系统要求每一个安装进系 统的应用程序都是经过数字证书签名的,数字证书的私钥则保存在程序开发者的手中。Android将数字证书用来标识应用程序的作者和在应用程序之间建立信 任关系,不是用来决定最终用户可以安装哪些应用程序。这个数字证书并不需要权威的数字证书签名机构认证,它只是用来让应用程序包自我认证的。

    一:同一个开发者的多个程序尽可能使用同一个数字证书 ,这可以带来以下好处。

    (1)有利于程序升级,当新版程序和旧版程序的数字证书相同时,Android系统才会认为这两个程序是同一个程序的不同版本。假如新版程序和旧版程序的数字证书不相同,则Android系统认为他们是不同的程序,并产生冲突,会要求新程序更改包名。

    (2)有利于程序的模块化设计和开发。Android系统允许拥有同一个数字签名的程序运行在一个进程中,Android程序会将他们视为同一个程序。所以开发者可以将自己的程序分模块开发,而用户只需要在需要的时候下载适当的模块。

    (3) 可以通过权限(permission)的方式在多个程序间共享数据和代码。Android提供了基于数字证书的权限赋予机制,应用程序可以和其他的程序共 享概功能或者数据给那那些与自己拥有相同数字证书的程序。假如某个权限(permission)的protectionLevel是signature, 则这个权限就只能授予那些跟该权限所在的包拥有同一个数字证书的程序。

    在签名时,需要考虑数字证书的有效期 :

    (1)数字证书的有效期要包含程序的预计生命周期,一旦数字证书失效,持有改数字证书的程序将不能正常升级。

    (2)假如多个程序使用同一个数字证书,则该数字证书的有效期要包含所有程序的预计生命周期。

    (3)Android Market强制要求所有应用程序数字证书的有效期要持续到2033年10月22日以后。

    二:Android数字证书包含以下几个要点:

    (1)所有的应用程序都必须有数字证书 ,Android系统不会安装一个没有数字证书的应用程序

    (2)Android程序包使用的数字证书可以是自签名的,不需要一个权威的数字证书机构签名认证

    (3)假如要正式发布 一个Android ,必须使用一个合适的私钥生成的数字证书来给程序签名 ,而不能使用adt插件 或者ant工具 生成的调试证书来发布。

    (4)数字证书都是有有效期 的,Android只是在应用程序安装的时候才会检查证书的有效期。假如程序已经安装在系统中,即使证书过期也不会影响程序的正常功能。

    (5)Android使用标准的java工具 Keytool and Jarsigner 来生成数字证书,并给应用程序包签名。

    (6)使用zipalign 优化 程序。

    Android 系统不会安装运行任何一款未经数字签名的apk程序,无论是在模拟器上还是在实际的物理设备上。Android的开发工具(ADT插件和Ant)都可以协 助开发者给apk程序签名,它们都有两种模式:调试模式(debug mode)和发布模式(release mode)。

    在调试模式下,android的开发工具会在每次编译时使用调试用的数字证书给程序签名,开发者无须关心。

    当要发布程序时,开发者就需要使用自己的数字证书给apk包签名,可以有两种方法。

    (1)在命令行下使用JDK中的和Keytool(用于生成数字证书)和Jarsigner(用于使用数字证书签名)来给apk包签名。

    (2)使用ADT Export Wizard进行签名(假如没有数字证书可能需要生成数字证书)。

    三;两种签名方式

    第一种签名方式, 使用Keytool和Jarsigner给程序签名( 用于1.5以下版本 )

    命令:keytool -genkey -v -keystore android.keystore -alias android -keyalg RSA -validity 20000

    该 命令中,-keystore ophone.keystore 表示生成的证书,可以加上路径(默认在用户主目录下);-alias ophone 表示证书的别名是ophone;-keyalg RSA 表示采用的RSA算法;-validity 20000表示证书的有效期是20000天。

    此时,我们会在互用主目录下看到ophone.keystore,即我们刚刚创建的证书。

    第二种签名方式:现在介绍android 1.5及更新版本的apk签名方式

    1,打开Eclipse->选择你要签名的项目->右击->android tools->Export signed Application package…

    2,跳出窗口

    3,project checks 假如核对项目名没有问题的话 点击 Next

    然后跳出keystore selection 假如是已经存在keystore的文件就选择然后next 输入keystore的密码进行签名。
    假如没有的话选择 create new keystore 然后选择 keystore 保存的位置,设置keystore的密码,点击Next。

    4.填写keystore的基本信息,如,别名,密码,有效期,姓名,组织,组织名称,所在城市,所在省份,国家等,点击Next

    5.选择被签名后的APK保存位置。点击finish。

    6.就可以在你保存的位置中找到相应的被签名后的APK文件。

    上一篇返回首页 下一篇

    声明: 此文观点不代表本站立场;转载务必保留本文链接;版权疑问请联系我们。

    别人在看

    电脑屏幕不小心竖起来了?别慌,快捷键搞定

    Destoon 模板存放规则及语法参考

    Destoon系统常量与变量

    Destoon系统目录文件结构说明

    Destoon 系统安装指南

    Destoon会员公司主页模板风格添加方法

    Destoon 二次开发入门

    Microsoft 将于 2026 年 10 月终止对 Windows 11 SE 的支持

    Windows 11 存储感知如何设置?了解Windows 11 存储感知开启的好处

    Windows 11 24H2 更新灾难:系统升级了,SSD固态盘不见了...

    IT头条

    Synology 更新 ActiveProtect Manager 1.1 以增强企业网络弹性和合规性

    00:43

    新的 Rubrik Agent Cloud 加速了可信的企业 AI 代理部署

    00:34

    宇树科技 G1人形机器人,拉动一辆重达1.4吨的汽车

    00:21

    Cloudera 调查发现,96% 的企业已将 AI 集成到核心业务流程中,这表明 AI 已从竞争优势转变为强制性实践

    02:05

    投资者反对马斯克 1 万亿美元薪酬方案,要求重组特斯拉董事会

    01:18

    技术热点

    大型网站的 HTTPS 实践(三):基于协议和配置的优化

    ubuntu下右键菜单添加新建word、excel文档等快捷方式

    Sublime Text 简明教程

    用户定义SQL Server函数的描述

    怎么在windows 7开始菜单中添加下载选项?

    SQL Server 2016将有哪些功能改进?

      友情链接:
    • IT采购网
    • 科技号
    • 中国存储网
    • 存储网
    • 半导体联盟
    • 医疗软件网
    • 软件中国
    • ITbrand
    • 采购中国
    • CIO智库
    • 考研题库
    • 法务网
    • AI工具网
    • 电子芯片网
    • 安全库
    • 隐私保护
    • 版权申明
    • 联系我们
    IT技术网 版权所有 © 2020-2025,京ICP备14047533号-20,Power by OK设计网

    在上方输入关键词后,回车键 开始搜索。Esc键 取消该搜索窗口。