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签名工具,帮助开发者更有效地管理和签署他们的应用程序。 1. **re-sign.jar**:这是一个简单的命令行工具,用于重新签名已经存在的APK文件。签名过程是通过Java的Keytool和 jarsigner 工具...
- **APK签名**:确保apk未被篡改,保证安全。签名信息包括证书指纹和签名算法等。 - **Manifest文件**:包含了应用的元数据,如权限声明、活动、服务等。 利用此工具,开发者可以更高效地管理应用版本,优化更新...
解决方法:检查目标位置是否存在同名的文件夹,如果存在,需要先删除该文件夹,然后再尝试安装APK。 5. **Dalvik编译错误**: 错误信息:`Dx UNEXPECTED TOP-LEVEL EXCEPTION: java.lang....
43.更换APK图标(签名打包) 38 方法0。(推荐) 38 方法一. 38 方法二. 46 ★44.intent action大全: 53 ★45.Android的动作、广播、类别等标志大全 54 ★★★46.附带工具包说明 60 1.APK反编译工具.rar 60 2.APK...
17. **Android App打包流程**:APK的构建过程,了解资源混淆、签名和发布流程。 18. **NDK开发**:C/C++在Android开发中的应用,JNI的使用,以及性能提升方面的考量。 19. **Android最新版本特性**:针对新版本...
在Android开发领域,有时我们需要对APK应用进行反编译以了解其内部工作原理、调试或提取资源。本文将深入探讨Android反编译的相关知识,包括基础概念、工具使用及其实战技巧。主要关注APKTOOL和dex2jar这两个重要的...
它主要用于解压缩APK文件,将Dalvik字节码(.dex)转换为人类可读的Smali代码,并且可以重新打包和签名APK,以便进行二次开发。通过apktool,开发者可以查看资源文件(如XML布局、图片等),理解应用程序的结构,...
### Android开发指南(中文版)知识点汇总 #### 一、Android核心模块及相关技术概览 在《Android开发指南(中文版)》文档中,作者详细介绍了Android的核心模块及相关技术,为初学者提供了一个全面的学习框架。 1. **...
在安装APK时,Android系统会检查应用的签名,确保其来源可靠。如果用户尝试安装未签名或签名不匹配的APK,安装过程将被阻止。此外,应用可能会请求特定的权限,如访问联系人、相册、位置等,用户需要在安装过程中...
本篇文章将详细解析标题"反编译工具汇总"所涵盖的三个主要工具:apktool、dex2jar以及jd-gui,以及它们在Android和Java开发中的应用。 首先,`apktool`是一款专为Android应用设计的反编译工具,版本为2.3.3。它允许...
- **解决方案**: 检查应用签名、验证Android SDK和NDK版本是否匹配。 #### 4. 其它注意事项 - **软件版本**: 所有需要的软件及插件版本以作者实际使用为准。 - **下载地址**: 文件下载地址在文档撰写时确认有效,...
使用apktool,你可以重新打包并签名APK,实现对原应用的定制或二次开发。不过需要注意,未经许可的反编译可能触及版权法,应谨慎操作。 接下来,我们谈论的是dex2jar。在Android系统中,所有的Java代码都被编译成...
### 思维导图 - 产品经理技术知识汇总 #### 一、产品思维与技术思维 - **产品思维与技术思维的区别** - **产品思维**:关注用户需求、市场趋势和用户体验,强调从用户的角度出发思考问题。 - **技术思维**:侧重...
- **Android任务**:专门针对Android项目的任务,如打包、签名等。 - **自定义构建**:包括自定义构建任务、配置选项等。 - **Manifest选项**:配置AndroidManifest.xml文件中的信息。 - **构建类型**:定义不同...