`
xusaomaiss
  • 浏览: 615411 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

android 对于apk签名汇总

 
阅读更多

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

Android程序的签名和Symbian类似都可以自签名(Self- signed),但是在Android平台中证书初期还显得形同虚设,平时开发时通过ADB接口上传的程序会自动被签有Debug权限的程序。需要签名验 证在上传程序到Android Market上时大家都已经发现这个问题了。

 

Android signed制作方法

 

首先在Android开发时没有安装JDK的网友在Sun官方网站下载JDK http://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 wendy.keystore
 -keyalg RSA -validity 20000 -keystore wendy.keystore
输入keystore密码:[密码不回显]
再次输入新密码:[密码不回显]
您的名字与姓氏是什么?
  [Unknown]:  wendy

您的组织单位名称是什么?
  [Unknown]: 
home

您的组织名称是什么?
  [Unknown]: 
home
您所在的城市或区域名称是什么?
  [Unknown]:  New York
您所在的州或省份名称是什么?
  [Unknown]:  New York
该单位的两字母国家代码是什么
  [Unknown]:  CN
CN=wendy, OU=home, O=home, L=New York, ST
=New York, C=CN 正确吗?
  [否]:  Y

输入<wendy.keystore>的主密码
        (如果和 keystore 密码相同,按回车):

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

 

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

 第二步

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

 

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

 

 

 

补充:

 

    如果需要最终发行你的android程序,必需为apk文件签名。这里apk和jar的签名方式都是一样的,使用sun jdk的jarsigner工具来完成,但是执行时会提示jarsigner: 无法对 jar 进行签名: java.util.zip.ZipException: invalid entry compressed size (expected xxx but got xxx bytes)这样的提示,

     这些问题主要是由于资源文件造成的,对于android开发来说应该检查res文件夹中的文件,逐个排查。这个问题可以通过升级系统的JDK和JRE版本来解决。

 

转摘自:http://blog.csdn.net/wenhaiyan/article/details/5520964

分享到:
评论

相关推荐

    apk签名工具汇总(三类工具)

    本文将详细介绍三种APK签名工具,帮助开发者更有效地管理和签署他们的应用程序。 1. **re-sign.jar**:这是一个简单的命令行工具,用于重新签名已经存在的APK文件。签名过程是通过Java的Keytool和 jarsigner 工具...

    apk增量更新和版本信息查看工具

    - **APK签名**:确保apk未被篡改,保证安全。签名信息包括证书指纹和签名算法等。 - **Manifest文件**:包含了应用的元数据,如权限声明、活动、服务等。 利用此工具,开发者可以更高效地管理应用版本,优化更新...

    Android开发eclipse错误汇总

    解决方法:检查目标位置是否存在同名的文件夹,如果存在,需要先删除该文件夹,然后再尝试安装APK。 5. **Dalvik编译错误**: 错误信息:`Dx UNEXPECTED TOP-LEVEL EXCEPTION: java.lang....

    Android开发技巧总汇(个人总结)

    43.更换APK图标(签名打包) 38 方法0。(推荐) 38 方法一. 38 方法二. 46 ★44.intent action大全: 53 ★45.Android的动作、广播、类别等标志大全 54 ★★★46.附带工具包说明 60 1.APK反编译工具.rar 60 2.APK...

    Android面试专题汇总.zip

    17. **Android App打包流程**:APK的构建过程,了解资源混淆、签名和发布流程。 18. **NDK开发**:C/C++在Android开发中的应用,JNI的使用,以及性能提升方面的考量。 19. **Android最新版本特性**:针对新版本...

    Android反编译教程+工具汇总

    在Android开发领域,有时我们需要对APK应用进行反编译以了解其内部工作原理、调试或提取资源。本文将深入探讨Android反编译的相关知识,包括基础概念、工具使用及其实战技巧。主要关注APKTOOL和dex2jar这两个重要的...

    反编译工具汇总apktool、dex2jar、jd-gui

    它主要用于解压缩APK文件,将Dalvik字节码(.dex)转换为人类可读的Smali代码,并且可以重新打包和签名APK,以便进行二次开发。通过apktool,开发者可以查看资源文件(如XML布局、图片等),理解应用程序的结构,...

    Android开发指南(中文版).pdf

    ### Android开发指南(中文版)知识点汇总 #### 一、Android核心模块及相关技术概览 在《Android开发指南(中文版)》文档中,作者详细介绍了Android的核心模块及相关技术,为初学者提供了一个全面的学习框架。 1. **...

    秘密花园2.8.zip

    在安装APK时,Android系统会检查应用的签名,确保其来源可靠。如果用户尝试安装未签名或签名不匹配的APK,安装过程将被阻止。此外,应用可能会请求特定的权限,如访问联系人、相册、位置等,用户需要在安装过程中...

    反编译工具汇总

    本篇文章将详细解析标题"反编译工具汇总"所涵盖的三个主要工具:apktool、dex2jar以及jd-gui,以及它们在Android和Java开发中的应用。 首先,`apktool`是一款专为Android应用设计的反编译工具,版本为2.3.3。它允许...

    cocos2d-x_Win32_Android_环境配置手册

    - **解决方案**: 检查应用签名、验证Android SDK和NDK版本是否匹配。 #### 4. 其它注意事项 - **软件版本**: 所有需要的软件及插件版本以作者实际使用为准。 - **下载地址**: 文件下载地址在文档撰写时确认有效,...

    反编译工具汇总(apktool、dex2jar、jd-gui)

    使用apktool,你可以重新打包并签名APK,实现对原应用的定制或二次开发。不过需要注意,未经许可的反编译可能触及版权法,应谨慎操作。 接下来,我们谈论的是dex2jar。在Android系统中,所有的Java代码都被编译成...

    思维导图 -产品经理技术知识汇总.pdf

    ### 思维导图 - 产品经理技术知识汇总 #### 一、产品思维与技术思维 - **产品思维与技术思维的区别** - **产品思维**:关注用户需求、市场趋势和用户体验,强调从用户的角度出发思考问题。 - **技术思维**:侧重...

    Gradle-Guide-Book

    - **Android任务**:专门针对Android项目的任务,如打包、签名等。 - **自定义构建**:包括自定义构建任务、配置选项等。 - **Manifest选项**:配置AndroidManifest.xml文件中的信息。 - **构建类型**:定义不同...

Global site tag (gtag.js) - Google Analytics