原文地址:http://www.android123.com.cn/androidkaifa/173.html
Android程序的签名和Symbian类似都可以自签名(Self-signed),但是在Android平台中证书初期还显得形同虚设,平时开发时通过ADB接口上传的程序会自动被签有Debug权限的程序。需要签名验证在上传程序到Android Market上时大家都已经发现这个问题了。Android signed制作方法
首先在Android开发时没有安装JDK的网友在Sun官方网站下载JDKhttp://www.java.net/download/jdk6/6u10/promoted/b32/binaries/jdk-6u10-rc2-bin-b32-windows-i586-p-12_sep_2008.exe,其实仅需要中的Keytool和Jarsigner。
详细的签名步骤:
第一步
C:\Program Files\Java\jdk1.6.0_10\bin>keytool -genkey -alias android123.keystore
-keyalg RSA -validity 20000 -keystore android123.keystore
输入keystore密码:[密码不回显]
再次输入新密码:[密码不回显]
您的名字与姓氏是什么?
[Unknown]: android123
您的组织单位名称是什么?
[Unknown]: www.android123.com.cn
您的组织名称是什么?
[Unknown]: www.android123.com.cn
您的组织名称是什么?
[Unknown]: www.android123.com.cn
您所在的城市或区域名称是什么?
[Unknown]: New York
您所在的州或省份名称是什么?
[Unknown]: New York
该单位的两字母国家代码是什么
[Unknown]: CN
CN=android123, OU=www.android123.com.cn, O=www.android123.com.cn, L=New York, ST
=New York, C=CN 正确吗?
[否]: Y
输入<android123.keystore>的主密码[img][/img]
(如果和 keystore 密码相同,按回车):
其中参数-validity为证书有效天数,这里我们写的大些20000天。还有在输入密码时没有回显,只管输入就可以了,一般位数建议使用20位,最后需要记下来后面还要用
接下来我们开始为apk文件签名了。
第二步
执行下面这句jarsigner -verbose -keystore android123.keystore -signedjar android123_signed.apk android123.apk android123.keystore 就可以生辰签名的apk文件,这里输入文件android123.apk,最终生成android123_signed.apk为Android签名后的APK执行文件。下面提示输入的密码和keytool输入的一样就行了
有关Android程序发布和签名可以查看SDK中 http://code.google.com/android/devel/sign-publish.html 一文.
附上keytool参数以及jarsigner参数:
keytool用法:
-certreq [-v] [-protected]
[-alias <别名>] [-sigalg <sigalg>]
[-file <csr_file>] [-keypass <密钥库口令>]
[-keystore <密钥库>] [-storepass <存储库口令>]
[-storetype <存储类型>] [-providername <名称>]
[-providerclass <提供方类名称> [-providerarg <参数>]] ...
[-providerpath <路径列表>]
-changealias [-v] [-protected] -alias <别名> -destalias <目标别名>
[-keypass <密钥库口令>]
[-keystore <密钥库>] [-storepass <存储库口令>]
[-storetype <存储类型>] [-providername <名称>]
[-providerclass <提供方类名称> [-providerarg <参数>]] ...
[-providerpath <路径列表>]
-delete [-v] [-protected] -alias <别名>
[-keystore <密钥库>] [-storepass <存储库口令>]
[-storetype <存储类型>] [-providername <名称>]
[-providerclass <提供方类名称> [-providerarg <参数>]] ...
[-providerpath <路径列表>]
-exportcert [-v] [-rfc] [-protected]
[-alias <别名>] [-file <认证文件>]
[-keystore <密钥库>] [-storepass <存储库口令>]
[-storetype <存储类型>] [-providername <名称>]
[-providerclass <提供方类名称> [-providerarg <参数>]] ...
[-providerpath <路径列表>]
-genkeypair [-v] [-protected]
[-alias <别名>]
[-keyalg <keyalg>] [-keysize <密钥大小>]
[-sigalg <sigalg>] [-dname <dname>]
[-validity <valDays>] [-keypass <密钥库口令>]
[-keystore <密钥库>] [-storepass <存储库口令>]
[-storetype <存储类型>] [-providername <名称>]
[-providerclass <提供方类名称> [-providerarg <参数>]] ...
[-providerpath <路径列表>]
-genseckey [-v] [-protected]
[-alias <别名>] [-keypass <密钥库口令>]
[-keyalg <keyalg>] [-keysize <密钥大小>]
[-keystore <密钥库>] [-storepass <存储库口令>]
[-storetype <存储类型>] [-providername <名称>]
[-providerclass <提供方类名称> [-providerarg <参数>]] ...
[-providerpath <路径列表>]
-help
-importcert [-v] [-noprompt] [-trustcacerts] [-protected]
[-alias <别名>]
[-file <认证文件>] [-keypass <密钥库口令>]
[-keystore <密钥库>] [-storepass <存储库口令>]
[-storetype <存储类型>] [-providername <名称>]
[-providerclass <提供方类名称> [-providerarg <参数>]] ...
[-providerpath <路径列表>]
-importkeystore [-v]
[-srckeystore <源密钥库>] [-destkeystore <目标密钥库>]
[-srcstoretype <源存储类型>] [-deststoretype <目标存储类型>]
[-srcstorepass <源存储库口令>] [-deststorepass <目标存储库口令>]
[-srcprotected] [-destprotected]
[-srcprovidername <源提供方名称>]
[-destprovidername <目标提供方名称>]
[-srcalias <源别名> [-destalias <目标别名>]
[-srckeypass <源密钥库口令>] [-destkeypass <目标密钥库口令>]]
[-noprompt]
[-providerclass <提供方类名称> [-providerarg <参数>]] ...
[-providerpath <路径列表>]
-keypasswd [-v] [-alias <别名>]
[-keypass <旧密钥库口令>] [-new <新密钥库口令>]
[-keystore <密钥库>] [-storepass <存储库口令>]
[-storetype <存储类型>] [-providername <名称>]
[-providerclass <提供方类名称> [-providerarg <参数>]] ...
[-providerpath <路径列表>]
-list [-v | -rfc] [-protected]
[-alias <别名>]
[-keystore <密钥库>] [-storepass <存储库口令>]
[-storetype <存储类型>] [-providername <名称>]
[-providerclass <提供方类名称> [-providerarg <参数>]] ...
[-providerpath <路径列表>]
-printcert [-v] [-file <认证文件>]
-storepasswd [-v] [-new <新存储库口令>]
[-keystore <密钥库>] [-storepass <存储库口令>]
[-storetype <存储类型>] [-providername <名称>]
[-providerclass <提供方类名称> [-providerarg <参数>]] ...
[-providerpath <路径列表>]
jarsigner用法: [选项] jar 文件别名
jarsigner -verify [选项] jar 文件
[-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 <参数>]] ... 主类文件和构造函数参数
分享到:
相关推荐
本文将详细介绍如何使用`keytool`和`jarsigner`工具来为Android APK文件进行签名。 首先,`keytool`是Java Development Kit (JDK)自带的一个命令行工具,用于管理和创建数字证书,包括生成密钥对(公钥和私钥)以及...
Windows版本的Android Apk签名工具是Android SDK工具包的一部分,它允许开发者使用密钥对APK进行签名。这个工具通常包括`jarsigner`命令行工具和`zipalign`优化工具,它们对于发布高质量的Android应用至关重要。 三...
2. **签名APK**:使用 jarsigner 工具,用私钥对APK进行签名。签名过程会计算APK中所有文件的哈希值,然后用私钥加密这些哈希值,生成签名信息。 3. **对齐优化**:为了提高APK的加载速度,开发者通常会使用Zipalign...
在Windows环境下,开发者通常使用特定的工具来对APK进行签名,以使其能够在Android设备上顺利安装和运行。本文将详细介绍如何在Windows操作系统下对Android APK进行签名,以及相关的知识点。 一、APK签名的重要性 ...
总结来说,Android Apk的签名过程涉及到安全性和开发者身份的确认,无论是通过图形界面的Eclipse,还是命令行的keytool和jarsigner,或者是源码级别的签名,都是为了确保用户能够安全地下载和安装应用。正确理解和...
本文将深入探讨Android签名工具、升级包签名以及APK签名的细节。 首先,我们来理解什么是Android签名。Android签名是指对APK(Android应用程序包)进行数字签名的过程,它验证了APK的来源并确保其未被篡改。每个APK...
5. **签名APK**:使用 jarsigner 工具,用新keystore文件对APK进行签名。命令行示例:`jarsigner -verbose -keystore 新keystore文件路径 -storepass 密码 -keypass 密码 -signedjar 签名后APK文件路径 原APK文件...
在Android平台上,APK文件是应用的安装包...了解和掌握APK签名工具的使用,对于任何Android开发者来说都是必备技能。通过理解这个过程,开发者可以更有效地管理和维护自己的应用程序,确保它们在用户设备上的安全运行。
在Android系统中,每个APK文件在发布之前都必须用私钥进行签名。这个签名主要用于验证应用的身份,确保它没有被篡改,并且来自可信赖的开发者。签名过程涉及到三个主要步骤:生成密钥、使用密钥签署APK以及对APK进行...
"Android APK 文件生成的常见操作和问题" Android APK 文件生成是 Android 应用程序的最后一...生成 APK 文件是 Android 应用程序的最后一步骤,需要完成签名操作和验证步骤,以便在安装时可以验证 APK 文件的身份。
本文将详细讲解Android APK的打包和签名过程,以及如何使用Eclipse、IntelliJ IDEA等工具进行签名操作。 首先,理解签名的意义至关重要。Android应用的签名主要用于确认应用的来源和确保其完整性。每个开发者的签名...
在Android应用开发中, APK(Android Package)是用于分发和安装Android应用程序的文件格式。在将APK发布到Google Play商店或者进行第三方分发时,必须对其进行签名,以确保应用的完整性和开发者身份的验证。本文将...
3. 签名APK:使用jarsigner命令,指定APK路径、密钥库和私钥,对APK进行签名。 4. 验证签名:签名完成后,可以使用jarsigner的verify选项检查签名是否有效。 在Android开发中,理解这些工具的使用方法是至关重要的...
4. **验证签名**:当用户尝试安装APK时,Android系统会用公钥解密数字签名,然后重新计算APK的哈希值。如果两者匹配,说明APK未被修改,安装过程继续;否则,安装将被阻止。 5. **系统签名**:Android系统签名是指...
- **Keytool和Jarsigner**:Android使用标准的Java工具Keytool和Jarsigner来生成数字证书,并给应用程序包签名。 - **zipalign优化**:使用zipalign工具对APK文件进行优化,可以减少内存消耗,提高启动速度。 #### ...
签名工具(如Android的apksigner或Jarsigner)就是在这个阶段发挥作用,它使用私钥对APK的元数据进行哈希计算并签名,然后将签名信息嵌入到APK中。 "apk签名工具文件"通常指的是用于执行这个签名过程的特定软件或...
通过对上述命令的详细解读,我们可以清晰地了解到Android APK签名的基本流程,包括生成密钥库、使用jarsigner工具进行签名以及使用zipalign工具对已签名APK进行优化。这些步骤对于确保Android应用程序的安全性和完整...
2. 签名APK:使用`jarsigner`工具对未签名的APK进行签名,指定密钥库和对应的密钥别名。 3. 对齐APK:为了优化设备性能,可能需要使用`zipalign`工具对签名后的APK进行对齐操作。 4. (可选)如果使用V2或V3签名,...
`jarsigner`是Java开发工具包(JDK)的一部分,它用于为Java档案(JAR)文件、Android APK文件和其他可执行文件添加数字签名。签名的主要目的是验证软件的来源和完整性,防止篡改,同时为用户提供信任度,确保代码...
2. **优化APK文件**:使用 `zipalign` 对签名后的APK文件进行优化,提高其加载速度和性能。 #### 七、常见问题与解决方案 - **无法找到签名密钥**:确保正确指定了密钥库路径,并且拥有正确的密码。 - **签名失败**...