Android程序发布和签名可以查看SDK中 http://code.google.com/android/devel/sign-publish.html
参考 eclipse+ADT 进行android应用签名
android apk签名(为什么 如何做 验证)
这篇文章其实就是根据自己的疑问然后结合多个文章结合成的
一、为什么要签名:
1、发送者的身份认证,由于开发商可能通过使用相同的Package Name来混淆替换已经安装的程序,以此保证签名不同的包不被替换
2、保证信息传输的完整性,签名对于包中的每个文件进行处理,以此确保包中内容不被替换,防止交易中的抵赖发生,Market对软件的要求
二、签名的说明:
1、所有的应用程序都必须有数字证书,Android系统不会安装一个没有数字证书的应用程序
2、Android程序包使用的数字证书可以是自签名的,不需要一个权威的数字证书机构签名认证
3、如果要正式发布一个Android应用,必须使用一个合适的私钥生成的数字证书来给程序签名,而不能使用adt插件或者ant工具生成的调试证书来发布
4、 数字证书都是有有效期的,Android只是在应用程序安装的时候才会检查证书的有效期。如果程序已经安装在系统中,即使证书过期也不会影响程序的正常功能
5、签名后需使用zipalign优化程序
6、Android将数字证书用来标识应用程序的作者和在应用程序之间建立信任关系,而不是用来决定最终用户可以安装哪些应用程序
三、签名的方法:
1、 用eclipse插件方式签名
2、 调试签名
eclipse插件默认赋予程序一个DEBUG权限的签名,此签名的程序不能发布到market上,此签名有效期为一年,如果过期则导致你无法生成apk文件,此时你只要删除debug keystore即可,系统又会为你生成有效期为一年的新签名
b) 开发者生成密钥并签名
右键点击项目名,在菜单中选择Android Tools,然后选择Export Signed ApplicationPackage…,即可通过eclipse自定义证书并签名
c) 开发者导出未签名的包
右键点击项目名,在菜单中选择Android Tools,然后选择Export Signed ApplicationPackage…,即可导出未签名的包,之后可通过命令行方式签名
3、用命令行方式签名
使用标准的java工具keytool和jarsigner来生成证书和给程序签名
a) 生成签名
$ keytool -genkey -keystorekeyfile -keyalg RSA -validity 10000 -aliasyan
注:validity为天数,keyfile为生成key存放的文件,yan为私钥,RSA为指定的加密算法(可用RSA或DSA)
b) 为apk文件签名
$ jarsigner -verbose -keystorekeyfile -signedjar signed.apk base.apkyan
注:keyfile为生成key存放的文件,signed.apk为签名后的apk,base.apk 为未签名的apk,yan为私钥
c) 看某个apk是否经过了签名
$ jarsigner –verify my_application.apk
例如:jarsigner -verify -verbose -certs abc.apk
每个签名的apk都会看到如下信息
sm 152412 Wed Oct 14 14:16:52 CEST 2009 classes.dex
X.509, CN=Meebo, OU=Meebo, O=Meebo, L=Mountain View, ST=California, C=US
[certificate is valid from 28/10/08 06:49 to 13/08/82 07:49]
否则就是没有签名
d) 优化(签名后需要做对齐优化处理)
zipalign -v 4 your_project_name-unaligned.apk your_project_name.apk
4、在源码中编译的签名
a) 使用源码中的默认签名
在源码中编译一般都使用默认签名的,在某源码目录中用运行
$ mmshowcommands
能看到签名命令
Android提供了签名的程序signapk.jar,用法如下:
$ signapk publickey.x509[.pem]privatekey.pk8 input.jar output.jar
*.x509.pem为x509格式公钥,pk8为私钥
build/target
/product/security目录中有四组默认签名可选:testkey,platform, shared,
media(具体见README.txt),应用程序中Android.mk中有一个LOCAL_CERTIFICATE字段,由它指定用哪个key签
名,未指定的默认用testkey.
b) 在源码中自签名
Android提供了一个脚本mkkey.sh(build/target/product/security/mkkey.sh),用于生成密钥,生成后在应用程序中通过Android.mk中的LOCAL_CERTIFICATE字段指名用哪个签名
c) mkkey.sh介绍
i. 生成公钥
openssl genrsa -3 -outtestkey.pem 2048
其中-3是算法的参数,2048是密钥长度,testkey.pem 是输出的文件
ii. 转成x509格式(含作者有效期等)
openssl
req -new -x509 -keytestkey.pem -out testkey.x509.pem -days 10000
-subj‘/C=US/ST=California/L=Mountain
[email=View/O=Android/OU=Android/CN=Android/emailAddress=android@android.com]View/O=Android/OU=Android/CN=Android/emailAddress=android@android.com
[/email]’
iii. 生成私钥
openssl pkcs8 -in testkey.pem-topk8 -outform DER -out testkey.pk8-nocrypt
把的格式转换成PKCS #8,这里指定了-nocryp,表示不加密,所以签名时不用输入密码
四、签名的相关文件
1) apk包中签名相关的文件在META_INF目录下
CERT.SF:生成每个文件相对的密钥
MANIFEST.MF:数字签名信息
xxx.SF:这是JAR 文件的签名文件,占位符 xxx标识了签名者
xxx.DSA:对输出文件的签名和公钥
2)相关源码
五、签名的相关问题
一般在安装时提示出错:INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES
1) 两个应用,名字相同,签名不同
2) 升级时前一版本签名,后一版本没签名
3) 升级时前一版本为DEBUG签名,后一个为自定义签名
4) 升级时前一版本为Android源码中的签名,后一个为DEBUG签名或自定义签名
5) 安装未签名的程序
6) 安装升级已过有效期的程序
6. 相关工具
1) 查看某个x509证书的的有效日期
签名具体步骤:
Apk签名首先要有一个keystore的签名用的文件.
keystore是由jdk自带的工具keytool生成的.具体生成方式参考一下:
开始->运行->cmd->cd 到你安装的jdk的目录这里我是 C:\Program Files\Java\jdk1.6.0_10\bin
然后输入:keytool -genkey -alias asaiAndroid.keystore -keyalg RSA -validity 20000 -keystore asaiAndroid.keystore
-alias 后跟的是别名这里是 asaiAndroid.keystore
-keyalg 是加密方式这里是 RSA
-validity 是有效期 这里是 20000
-keystore 就是要生成的keystore的名称 这里是 asaiAndroid.keystore
然后按回车
按回车后首先会提示你输入密码:这个在签名时要用的要记住了哦。
然后会再确认你的密码。
之后会依次叫你输入 姓名,组织单位,组织名称,城市区域,省份名称,国家代码等。
参考:
运行完可以在 C:\Program Files\Java\jdk1.6.0_10\bin 里找到刚才生产的keyStore文件
好现在开始给Apk签名了:
在 C:\Program Files\Java\jdk1.6.0_10\bin 还提供一个工具 jarsigner.exe
好现在可以在刚才的命令行后继续运行以下命令给APK签名:
jarsigner -verbose -keystore asaiAndroid.keystore -signedjar LotteryOnline_signed.apk LotteryOnline.apk asaiAndroid.keystore
-keystore:keystore 的名称
LotteryOnline_signed.apk 是签完名后的APK
LotteryOnline.apk 是签名前的apk
然后按回车:会要求输入刚才设置的密码,输入后按回车就开始签名了。
分享到:
相关推荐
本文将详细介绍如何使用`keytool`和`jarsigner`工具来为Android APK文件进行签名。 首先,`keytool`是Java Development Kit (JDK)自带的一个命令行工具,用于管理和创建数字证书,包括生成密钥对(公钥和私钥)以及...
因为在做安卓中文编程平台(ACP)的项目,用到了apk签名文件。...-signedjar release.apk debug.apk android :签名的apk保存文件名(要求绝对路径)、未签名的apk文件(要求绝对路径)、秘钥别名。@DDSGXQ。
2.用WINRAR打开APK文件,将自己的图片图标放进替换原有的,然后用本软件制作签名,然后安装进Android. 3.下载别人制作好的ROM,自己精简删除,或者添加APK文件。 4.用本软件给ROM制作数字签名,然后刷机
Delphi XE5 图解为Android应用制作签名 Delphi XE5 是一个功能强大且流行的开发环境,用于构建跨平台应用程序。在 Android 平台上,Delphi XE5 提供了详细的签名机制,以确保应用程序的安全和可靠性。在本文中,...
Android制作签名,无签名的APK,以及密钥的生成及工具安装
2.用WINRAR打开APK文件,将自己的图片图标放进替换原有的,然后用本软件制作签名,然后安装进Android。 3.下载别人制作好的ROM,自己精简删除,或者添加APK文件。 4.用本软件给 ROM 制作签名 ,然后刷机
以下是关于“安卓制作apk签名”的详细知识讲解: 1. **什么是APK签名**: APK签名是Android系统用来验证应用的身份和完整性的一种机制。每个 APK 文件在发布之前都需要用一个私钥进行签名,签名的过程会计算 APK ...
在Android平台上,`.apk`文件是应用程序的可执行包,相当于Windows系统中的.exe程序。`.apk`文件包含了应用的所有资源,如代码、图片、布局文件等。本篇将详细讲解如何创建并理解一个Android `.apk`应用程序的过程,...
Android应用程序的打包过程是将应用程序编译、压缩和签名的过程,以生成可在Android设备上运行的APK文件。下面是使用Eclipse生成Android程序APK文件的汇编过程: 一、准备工作 在使用Eclipse生成Android程序APK...
2.用WINRAR打开APK文件,将自己的图片图标放进替换原有的,然后用本软件制作签名,然后安装进Android. 3.下载别人制作好的ROM,自己精简删除,或者添加APK文件。 4.用本软件给ROM制作数字签名,然后刷机
按照向导提示,创建一个密钥库,输入相关信息,然后选择APK的版本和签名方式。生成的APK文件可以在指定的目录下找到,可以用于发布到Google Play或其他应用市场。 以上就是使用Android Studio搭建开发环境、使用...
Android 操作系统中,安装包的制作是非常重要的一步骤,安装包的制作可以将 Android 项目编译成可以在 Android 设备上安装和运行的 APK 文件。本文将详细讲解在 Android Eclipse 开发环境下制作 APK 安装包的方法。 ...
二、Android签名机制 在Android系统中,签名主要有两个目的:验证应用程序的完整性和确认其来源。签名过程涉及到以下几个关键步骤: 1. 生成密钥对:开发者首先需要使用Keytool生成一对密钥,包括一个私钥(私有,...
为了在Android上发布.NET MAUI应用,你需要生成一个APK文件并对其进行签名。以下是一个简化的签名过程: 1. **设置项目属性**:在Visual Studio中,确保你的项目配置为Release模式,这是发布应用的标准设置。 2. **...
1、本工具用来编译及反编译apk 【用于自作个性化的apk】 2、可以自作自己的证书【用于自作的证书签名专属... signapk基于android默认签名,JarSigner基于自己的xxx.keystore签名 请自行修改 APKTool.cmd的批处理命令
它包括对apk文件的解包、打包、签名、汉化、应用共存制作、文字翻译等等操作!而本软件也是手机端首个,Android汉化软件,让你在没有电脑的情况下,在任何地点,任何时间都能汉化修改Android软件。 - 支持直接编辑...
在【友益文书软件安装包9.2.2.exe】这个文件中,我们可以推测它是一个用于制作APK电子书的软件。安装此软件后,用户可以利用其提供的功能和界面来制作自己的手机电子书。软件可能包含了各种预设的样式和模板,使得...
一、理解Android签名证书 在Android系统中,每个发布到Google Play Store或其他第三方市场的应用程序都需要一个数字签名。这个签名证书包含了开发者身份的信息,包括开发者的名字、组织和证书的有效期。通过签名,...
因为在做安卓中文编程平台(ACP)的项目,用到了apk签名文件。这个签名工具目测和E4A...-signedjar release.apk debug.apk android :签名的apk保存文件名(要求绝对路径)、未签名的apk文件(要求绝对路径)、秘钥别名