`
wuhua
  • 浏览: 2114384 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Android签名用keytool和jarsigner制作apk文件

阅读更多

原文地址: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>的主密码
        (如果和 keystore 密码相同,按回车):

 其中参数-validity为证书有效天数,这里我们写的大些20000天。还有在输入密码时没有回显,只管输入就可以了,一般位数建议使用20位,最后需要记下来后面还要用,整个过程如图:

android keytool

  接下来我们开始为apk文件签名了。

 第二步

  执行下面这句jarsigner -verbose -keystore android123.keystore -signedjar android123_signed.apk android123.apk android123.keystore 就可以生辰签名的apk文件,这里输入文件android123.apk,最终生成android123_signed.apk为Android签名后的 APK执行文件。下面提示输入的密码和keytool输入的一样就行了,如图:

 android jarsigner

  有关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 <参数>]] ... 主类文件和构造函数参数

分享到:
评论
4 楼 leozhang2002 2009-03-29  
看了下面这篇文章后搞清楚了
http://5aijava.iteye.com/blog/123269

1、用keytool生成证书:
        keytool -genkey -alias tomcat -keyalg RSA -keystore c:/tomcat/mykey
说明:
    这里-alias tomcat 是表示生成的这个证书的别名叫tomcat,-keyalg RSA  指的是采用的RSA算法,-keystore c:/tomcat/mykey 是指生成的证书存储的位置。回车后会提示你输入keystore password,这可以自己定,然后是一些个人信息及组织信息,可以轻松搞定。

听说validity 缺省时间是90 天,有点短,所以最好设置一个较长的天数
3 楼 leozhang2002 2009-03-29  
刚刚做完“论坛规则小测验”,做了3遍捏!这才被允许回复。汗~~~

我是刚接触android,很多东西不懂。见谅

我想问的是,LZ 上面用到的 android123.keystore 和对应的密码是从哪里获取的?
2 楼 wuhua 2009-03-06  
哪里啊,我也是上网看的,然后就发到这里来分享下
1 楼 lordhong 2009-03-06  
多谢无花大哥贡献...

相关推荐

    Android签名用keytool和jarsigner制作apk文件.doc

    本文将详细介绍如何使用`keytool`和`jarsigner`工具来为Android APK文件进行签名。 首先,`keytool`是Java Development Kit (JDK)自带的一个命令行工具,用于管理和创建数字证书,包括生成密钥对(公钥和私钥)以及...

    Windows版本 Android Apk签名工具

    Windows版本的Android Apk签名工具是Android SDK工具包的一部分,它允许开发者使用密钥对APK进行签名。这个工具通常包括`jarsigner`命令行工具和`zipalign`优化工具,它们对于发布高质量的Android应用至关重要。 三...

    android-APK系统签名文件.rar

    2. **签名APK**:使用 jarsigner 工具,用私钥对APK进行签名。签名过程会计算APK中所有文件的哈希值,然后用私钥加密这些哈希值,生成签名信息。 3. **对齐优化**:为了提高APK的加载速度,开发者通常会使用Zipalign...

    windows下android apk签名工具

    在Windows环境下,开发者通常使用特定的工具来对APK进行签名,以使其能够在Android设备上顺利安装和运行。本文将详细介绍如何在Windows操作系统下对Android APK进行签名,以及相关的知识点。 一、APK签名的重要性 ...

    android Apk签名的3种方式

    总结来说,Android Apk的签名过程涉及到安全性和开发者身份的确认,无论是通过图形界面的Eclipse,还是命令行的keytool和jarsigner,或者是源码级别的签名,都是为了确保用户能够安全地下载和安装应用。正确理解和...

    Android签名工具,升级包和APK签名

    本文将深入探讨Android签名工具、升级包签名以及APK签名的细节。 首先,我们来理解什么是Android签名。Android签名是指对APK(Android应用程序包)进行数字签名的过程,它验证了APK的来源并确保其未被篡改。每个APK...

    APK重新签名

    5. **签名APK**:使用 jarsigner 工具,用新keystore文件对APK进行签名。命令行示例:`jarsigner -verbose -keystore 新keystore文件路径 -storepass 密码 -keypass 密码 -signedjar 签名后APK文件路径 原APK文件...

    android apk签名工具

    在Android平台上,APK文件是应用的安装包...了解和掌握APK签名工具的使用,对于任何Android开发者来说都是必备技能。通过理解这个过程,开发者可以更有效地管理和维护自己的应用程序,确保它们在用户设备上的安全运行。

    签名apk文件包

    在Android系统中,每个APK文件在发布之前都必须用私钥进行签名。这个签名主要用于验证应用的身份,确保它没有被篡改,并且来自可信赖的开发者。签名过程涉及到三个主要步骤:生成密钥、使用密钥签署APK以及对APK进行...

    apk文件生成的常见操作和问题

    "Android APK 文件生成的常见操作和问题" Android APK 文件生成是 Android 应用程序的最后一...生成 APK 文件是 Android 应用程序的最后一步骤,需要完成签名操作和验证步骤,以便在安装时可以验证 APK 文件的身份。

    Android_apk打包签名

    本文将详细讲解Android APK的打包和签名过程,以及如何使用Eclipse、IntelliJ IDEA等工具进行签名操作。 首先,理解签名的意义至关重要。Android应用的签名主要用于确认应用的来源和确保其完整性。每个开发者的签名...

    Android apk签名批处理脚本

    在Android应用开发中, APK(Android Package)是用于分发和安装Android应用程序的文件格式。在将APK发布到Google Play商店或者进行第三方分发时,必须对其进行签名,以确保应用的完整性和开发者身份的验证。本文将...

    合并apk和odex文件的工具和签名工具

    3. 签名APK:使用jarsigner命令,指定APK路径、密钥库和私钥,对APK进行签名。 4. 验证签名:签名完成后,可以使用jarsigner的verify选项检查签名是否有效。 在Android开发中,理解这些工具的使用方法是至关重要的...

    Android系统签名APK

    4. **验证签名**:当用户尝试安装APK时,Android系统会用公钥解密数字签名,然后重新计算APK的哈希值。如果两者匹配,说明APK未被修改,安装过程继续;否则,安装将被阻止。 5. **系统签名**:Android系统签名是指...

    android应用APK打包签名方法文档

    - **Keytool和Jarsigner**:Android使用标准的Java工具Keytool和Jarsigner来生成数字证书,并给应用程序包签名。 - **zipalign优化**:使用zipalign工具对APK文件进行优化,可以减少内存消耗,提高启动速度。 #### ...

    apk签名工具文件

    签名工具(如Android的apksigner或Jarsigner)就是在这个阶段发挥作用,它使用私钥对APK的元数据进行哈希计算并签名,然后将签名信息嵌入到APK中。 "apk签名工具文件"通常指的是用于执行这个签名过程的特定软件或...

    android apk 签名

    通过对上述命令的详细解读,我们可以清晰地了解到Android APK签名的基本流程,包括生成密钥库、使用jarsigner工具进行签名以及使用zipalign工具对已签名APK进行优化。这些步骤对于确保Android应用程序的安全性和完整...

    android 对于apk签名汇总

    2. 签名APK:使用`jarsigner`工具对未签名的APK进行签名,指定密钥库和对应的密钥别名。 3. 对齐APK:为了优化设备性能,可能需要使用`zipalign`工具对签名后的APK进行对齐操作。 4. (可选)如果使用V2或V3签名,...

    JDK自带的jarsigner签名工具帮助文档

    `jarsigner`是Java开发工具包(JDK)的一部分,它用于为Java档案(JAR)文件、Android APK文件和其他可执行文件添加数字签名。签名的主要目的是验证软件的来源和完整性,防止篡改,同时为用户提供信任度,确保代码...

    android APK 重新签名

    2. **优化APK文件**:使用 `zipalign` 对签名后的APK文件进行优化,提高其加载速度和性能。 #### 七、常见问题与解决方案 - **无法找到签名密钥**:确保正确指定了密钥库路径,并且拥有正确的密码。 - **签名失败**...

Global site tag (gtag.js) - Google Analytics