方法一: 命令行下对apk签名(原理)
创建key,需要用到keytool.exe (位于jdk1.6.0_24\jre\bin目录下),使用产生的key对apk签名用到的是jarsigner.exe (位于jdk1.6.0_24\bin目录下),把上两个软件所在的目录添加到环境变量path后,打开cmd输入
D:\>
keytool -genkey -alias demo.keystore -keyalg RSA -validity 40000 -keystore demo.keystore
/*说明:-genkey 产生密钥
-alias demo.keystore 别名 demo.keystore
-keyalg RSA 使用RSA算法对签名加密
-validity 40000 有效期限4000天
-keystore demo.keystore */
D:\>
jarsigner -verbose -keystore demo.keystore -signedjar demo_signed.apk demo.apk demo.keystore
/*说明:-verbose 输出签名的详细信息
-keystore demo.keystore 密钥库位置
-signedjar demor_signed.apk demo.apk demo.keystore 正式签名,三个参数中依次为签名后产生的文件demo_signed,要签名的文件demo.apk和密钥库demo.keystore.*/
注意事项:android工程的bin目录下的demo.apk默认是已经使用debug用户签名的,所以不能使用上述步骤对此文件再次签名。正确步骤应该是:在工程点击右键->Anroid Tools-Export Unsigned Application Package导出的apk采用上述步骤签名。
使用上面的签名参数,签名以后再模拟器上安装还是提示没有签名,但是在手机上能安装成功,最后修改参数如下,模拟器上就能安装了 -digestalg SHA1 -sigalg MD5withRSA,好像多上这两个参数
签名
jarsigner -sigalg MD5withRSA -digestalg SHA1 -keystore demo.keystore -storepass 123456 -signedjar aaa_signed.apk android-release-unsigned.apk demo.keystore
例子:
jarsigner -sigalg MD5withRSA -digestalg SHA1 -keystore aaa.keystore -storepass 123456 -signedjar aaa_signed.apk aaa.apk aaa.keystore
[-sigalg <算法>] 签名算法的名称
[-keystore <url>] 密钥库位置
[-storepass <口令>] 用于密钥库完整性的口令
[-storetype <类型>] 密钥库类型
[-keypass <口令>] 专用密钥的口令(如果不同)
[-sigfile <文件>] .SF/.DSA 文件的名称
[-signedjar <文件>] 已签名的 JAR 文件的名称
[-digestalg <算法>] 摘要算法的名称
[-sigalg <算法>] 签名算法的名称
[-verify] 验证已签名的 JAR 文件
[-verbose] 签名/验证时输出详细信息
[-certs] 输出详细信息和验证时显示证书
[-tsa <url>] 时间戳机构的位置
[-tsacert <别名>] 时间戳机构的公共密钥证书
[-altsigner <类>] 替代的签名机制的类名
[-altsignerpath <路径列表>] 替代的签名机制的位置
[-internalsf] 在签名块内包含 .SF 文件
[-sectionsonly] 不计算整个清单的散列
[-protected] 密钥库已保护验证路径
[-providerName <名称>] 提供者名称
[-providerClass <类> 加密服务提供者的名称
[-providerArg <参数>]] ... 主类文件和构造函数参数
优化
签名之后,用zipalign(压缩对齐)优化你的APK文件。
未签名的apk不能使用,也不能优化。签名之后的apk谷歌推荐使用zipalign.exe(位于android-sdk-windows\tools目录下)工具对其优化:
D:\>
zipalign -v 4 demo_signed.apk final.apk
如上,zipalign能够使apk文件中未压缩的数据在4个字节边界上对齐(4个字节是一个性能很好的值),这样android系统就可以使用mmap()(请自行查阅这个函数的用途)函数读取文件,可以在读取资源上获得较高的性能,
PS:1.在4个字节边界上对齐的意思就是,一般来说,是指编译器吧4个字节作为一个单位来进行读取的结果,这样的话,CPU能够对变量进行高效、快速的访问(较之前不对齐)。
2.对齐的根源:android系统中的Davlik虚拟机使用自己专有的格式DEX,DEX的结构是紧凑的,为了让运行时的性能更好,可以进一步用"对齐"进一步优化,但是大小一般会有所增加。
5.签名对你的App的影响。
分享到:
相关推荐
本文将深入探讨Android签名生成工具以及签名格式转换工具的相关知识。 一、Android签名的概念与作用 1.1 定义:Android签名是一个数字证书,它包含开发者的信息(如名称、组织和证书有效期)以及用于验证应用的私钥...
本文将深入探讨Java如何生成及验证Android签名文件,并解析源码中的相关概念。 首先,让我们理解Android签名文件的核心作用。Android签名文件(通常为`.keystore`格式)是一个包含了应用开发者私钥的加密文件,用于...
通常,Android签名过程涉及使用私钥对APK进行数字签名,以验证应用的来源并确保其未被篡改。签名过程不仅在安装时验证应用,还在更新或升级应用时起着重要作用。 首先,了解"MD5签名"。MD5(Message-Digest ...
一、Android签名机制--基础概念 1. 消息摘要算法 2. 非对称加密算法(RSA算法) 3. 数字签名 二、Android签名机制--APK签名过程 1. APK签名概述 2. APK签名相关的文件 3. 签名的过程(MANIFEST.MF) 4. 签名的过程...
3.用于android.uid.system,需要使用Android源码签名文件签名的情况。 4.签名后的apk,即可安装到Android系统。 5.注意,签名文件需要你自己Android源码系统的,我这里不提供。build/target/product/security 就是这...
本文将深入探讨Android签名的概念、签名生成过程以及签名格式转换的相关知识。 首先,Android签名的核心作用包括: 1. **身份验证**:签名可以验证应用程序的开发者身份,帮助用户识别应用的来源,防止恶意篡改。 ...
### 生成Android签名文件 在Android应用开发过程中,签名是一个重要的环节。为了确保应用程序的完整性和安全性,每个发布的Android应用程序都需要进行签名。本篇文章将详细解释如何生成Android签名文件(通常为*....
本文将深入探讨“android签名例子”这一主题,介绍如何在Android平台上实现流畅且清晰的签名界面,以及相关的使用方法。 一、Android签名界面的实现原理 Android系统提供了多种方式来实现签名功能,其中包括使用...
Android签名工具(SignApk)是一个Java应用程序,它使用密钥对APK进行签名,以便可以在Android设备上安装和运行。本文将详细讲解Android签名工具的使用、工作原理以及其在Android开发中的重要性。 ### 1. Android...
"可用的Android签名工具"是一个专门用于给Android ROM或APK文件签名的实用程序,它简化了通常繁琐的手动签名过程。这款工具特别适用于那些需要频繁签名或者对ROM进行刷机操作的用户。 首先,我们需要理解Android...
本文将详细介绍Android签名工具及其在Linux和MAC环境下的批量签名方法,以及提供的不同平台的工具。 首先,Android签名机制是为了验证应用程序的身份,防止篡改,并确保只有授权的应用才能安装和更新。每个APK文件...
本文将详细解析"android签名工具.zip"的相关知识点,包括Android签名的概念、作用、流程以及如何使用这款工具获取APK的签名。 **Android签名概念** Android签名是一种安全机制,它通过数字签名来验证应用的完整性...
### Android签名证书文件的解析与签名校验加强 #### 一、Android签名机制概述 Android平台为了确保应用的安全性和来源的可信度,采用了一套严格的签名机制。这一机制确保了只有经过签名的应用程序(APK)才能够在...
总的来说,这个"android签名版"的Demo不仅展示了如何使用Android Studio开发应用,还涵盖了签名过程,这对于任何想要在Android平台上发布应用的开发者来说都是至关重要的步骤。同时,它可能还涉及到手写输入或识别的...
首先,让我们了解什么是Android签名文件。在Android中,每个APK(Android应用程序包)在安装前都需要进行签名。签名的主要目的是验证应用的来源,并确保其在安装和运行过程中未被篡改。这里有两份关键的签名文件: ...
本篇文章将详细介绍Windows平台上的Android签名工具及其使用方法。 一、Android签名的重要性 1. 应用安全:签名过程会使用私钥对APK进行加密,防止恶意篡改,确保用户下载的是未经修改的原版应用。 2. 应用发布:...
在Android应用开发中,发布应用到Google Play或其他第三方市场前,必须对其进行签名。这个过程确保了应用的完整性和开发者身份的验证。在Mac操作系统上,我们可以使用命令行工具来完成这个任务。本教程将详细解释...
在Android开发中,"android 签名控件"是一个常见的需求,特别是在移动应用中需要用户进行电子签名的场景,例如合同签署、订单确认等。这个控件允许用户通过触屏在屏幕上绘制签名,然后保存或展示这个签名。在描述中...