`

Android签名制作apk

 
阅读更多

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
然后按回车:会要求输入刚才设置的密码,输入后按回车就开始签名了。

 

分享到:
评论

相关推荐

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

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

    apk签名文件keystore制作生成工具

    因为在做安卓中文编程平台(ACP)的项目,用到了apk签名文件。...-signedjar release.apk debug.apk android :签名的apk保存文件名(要求绝对路径)、未签名的apk文件(要求绝对路径)、秘钥别名。@DDSGXQ。

    安卓apk签名修改工具

    2.用WINRAR打开APK文件,将自己的图片图标放进替换原有的,然后用本软件制作签名,然后安装进Android. 3.下载别人制作好的ROM,自己精简删除,或者添加APK文件。 4.用本软件给ROM制作数字签名,然后刷机

    Android 制作APK

    Android制作签名,无签名的APK,以及密钥的生成及工具安装

    万能apk签名工具(APK文件修改工具)V1.00 绿色版

    2.用WINRAR打开APK文件,将自己的图片图标放进替换原有的,然后用本软件制作签名,然后安装进Android。 3.下载别人制作好的ROM,自己精简删除,或者添加APK文件。 4.用本软件给 ROM 制作签名 ,然后刷机

    apk签名工具

    2.用WINRAR打开APK文件,将自己的图片图标放进替换原有的,然后用本软件制作签名,然后安装进Android. 3.下载别人制作好的ROM,自己精简删除,或者添加APK文件。 4.用本软件给ROM制作数字签名,然后刷机

    APk 编辑器 Android

    它包括对apk文件的解包、打包、签名、汉化、应用共存制作、文字翻译等等操作!而本软件也是手机端首个,Android汉化软件,让你在没有电脑的情况下,在任何地点,任何时间都能汉化修改Android软件。 - 支持直接编辑...

    易语言-apk签名文件keystore制作生成工具

    因为在做安卓中文编程平台(ACP)的项目,用到了apk签名文件。这个签名工具目测和E4A...-signedjar release.apk debug.apk android :签名的apk保存文件名(要求绝对路径)、未签名的apk文件(要求绝对路径)、秘钥别名

    用于反编译、签名、证书制作、修改apk的工具(包括apktool)

    1、本工具用来编译及反编译apk 【用于自作个性化的apk】 2、可以自作自己的证书【用于自作的证书签名专属... signapk基于android默认签名,JarSigner基于自己的xxx.keystore签名 请自行修改 APKTool.cmd的批处理命令

    apk签名文件keystore制作生成工具-易语言

    签名方法:在jdk1.8下有效, jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore MyACP.keystore ...:签名的apk保存文件名( 要求绝对路径 )、未签名的apk文件 ( 要求绝对路径 )、秘钥别名

    Android渠道包生成工具(支持V1、V2签名)

    Android apk动态注入渠道号,支持V1及V2签名。jar包可直接使用,代码未加密。

    Android APK+Dex文件反编译及回编译工具v2.0.2

    是一款,针对Android OS系统的APK程序,直接反编译修改的工具。 APKDB集合了当今最强悍,最犀利的APK及Dex文件编译工具; 正常安装后,它直接在【鼠标右键】创建快捷菜单; 非常方便汉化工作者,对APK或Dex文件...

    apk反编译和签名

    安卓网首发APK编译+反编译+签名制作 for Android(附件来源于安卓网,安卓网版权所有)

    Maui在制作安卓程序的时候如何找到apk签名

    使用 .NET MAUI,可从单个共享代码库开发可在 Android、iOS、macOS 和 Windows 上运行的应用。 二、.NET MAUI 是开源的,是 Xamarin.Forms 的演变,从移动方案扩展到桌面方案,UI 控件从头开始重新生成,以确保性能...

    Android 实用开发技巧集.rar

    目录 1. 如何在Windows环境下搭建...3.2 制作keystore签名文件 ........... 21 3.3 生成签名的apk文件 ............... 23 3.4 发布android 应用程序到Market 25 3.5 从market下载应用到手机 ........ 26

    Android SM2、SM3、SM4 算法支持 Service Provider 及证书制作软件包

    Android SM2、SM3、SM4 算法支持 Service Provider 及证书制作软件包 国密算法 JCAJCE Service Provider,适应版本 Android 4.2.2~7.0 支持 SM2 的 KeyFactory、KeyPairGenerator、Cipher、Signature、X.509 ...

    Android移动开发实验4.doc

    " "2、使用Android制作一个应用程序,实现在屏幕中显示微信朋友圈页面。 " "二、实验设备(环境)及要求 " "1、winXP虚拟机; " "2、Eclipse集成开发环境。 " "三、实验内容与步骤 " "1)在Eclipse中创建Android...

    2010年谢彦的android笔记

    4.7 应用程序的签名(Signature) 135 4.8 应用的权限 138 4.9 屏幕密度Density 140 4.10 Prelink实现的源码分析 142 4.11 适配硬件平台 145 4.12 其他介绍 147 4.12.1 手机保护Keyguard 147 4.12.2 空中升级Fota 148 ...

    精通ANDROID 3(中文版)1/2

    第1章 Android计算平台简介  1.1 面向新PC的全新平台  1.2 Android的历史  1.3 Dalvik VM剖析  1.4 理解Android软件栈  1.5 使用Android SDK开发最终用户应用程序  1.5.1 Android模拟器  1.5.2 ...

Global site tag (gtag.js) - Google Analytics