微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > Android签名详解(debug和release)

Android签名详解(debug和release)

时间:09-12 来源:互联网 点击:

y.sh(build/target/product/security/mkkey.sh),用于生成密钥,生成后在应用程序中通过Android.mk中的LOCAL_CERTIFICATE字段指名用哪个签名

c) mkkey.sh介绍

i. 生成公钥

openssl genrsa -3 -out testkey.pem 2048

其中-3是算法的参数,2048是密钥长度,testkey.pem是输出的文件

ii. 转成x509格式(含作者有效期等)

openssl req -new -x509 -key testkey.pem -out testkey.x509.pem -days 10000 -subj ‘/C=US/ST=California/L=MountainView/O=Android/OU=Android/CN=Android/emailAddress=android@android.com’

iii. 生成私钥

openssl pkcs8 -in testkey.pem -topk8 -outform DER -out testkey.pk8 -nocrypt

把的格式转换成PKCS #8,这里指定了-nocryp,表示不加密,所以签名时不用输入密码

4. 签名的相关文件

1) apk包中签名相关的文件在meta_INF目录下

CERT.SF:生成每个文件相对的密钥

MANIFEST.MF:数字签名信息

xxx.SF:这是JAR文件的签名文件,占位符xxx标识了签名者

xxx.DSA:对输出文件的签名和公钥

2) 相关源码

development/tools/jarutils/src/com.anroid.jarutils/SignedJarBuilder.java

frameworks/base/services/java/com/android/server/PackageManagerService.java

frameworks/base/core/java/android/content/pm/PackageManager.java

frameworks/base/cmds/pm/src/com/android/commands/pm/Pm.java

dalvik/libcore/security/src/main/java/java/security/Sign*

build/target/product/security/platform.*

build/tools/signapk/*

5. 签名的相关问题

一般在安装时提示出错:INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES

1) 两个应用,名字相同,签名不同

2) 升级时前一版本签名,后一版本没签名

3) 升级时前一版本为DEBUG签名,后一个为自定义签名

4) 升级时前一版本为Android源码中的签

5.1 查看默认签名

不同的机子上或不同的设备上,利用eclipse编译出的apk签名是不一样的。eclipse都有一个默认的签名。查看签名路径:

1)打开EclipseàWindowàAndoridàBuild,在这个Build界面,找到Default debug keysore这个编辑框,里面的值则为本台设备中Eclipse的keystore的默认路径。

2)如果出现因签名不同而导致应用程序未安装,可以将原先的keystore替换掉当前设备上的keystore。并重新启动Eclipse。否则只能完全卸载掉移动设备上的apk,重新安装了。

5.2 无法覆盖安装

1、通过签名的方式生成你的APK,而不是直接从Bin目录底下去拷贝,每个Android可执行程序的APK都有自己的签名,只要签名一致,就可以覆盖安装,而不需要卸载;

2、数据库表结构的变化(增加一个字段,减少一个字段,新表的建立)。正常升级数据库的方法 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)

3、sharepreferences的数据有改变,这个跟数据库差不多,比如原来的sharepreferences保存的一数据是boolean,在后一版本把保存的数据改为string,问题就出现了。

5.3 导出签名

1)打开cmd控制台,输入命令:keytool -genkey -alias android.keystore -keyalg RSA -validity 20000 -keystore android.keystore,按照提示依次填写内容,并记住密码,后面会用到;

2)生成好keystore后,就可以导出签名apk了。Eclipse中,右击需要签名的工程àandroid toolsàexport signed application package,location为生成的keystore所在的位置,密码为创建keystore时设置的密码,然后按照提示,next,最后finish,成功导出签名apk。

详见:http://blog.csdn.net/yiwanxinyuefml/article/details/6765129

5.4 debug签名和release签名的区别

1)debug签名的应用程序不能在Android Market上架销售,它会强制你使用自己的签名;Debug模式下签名用的证书(默认是Eclipse/ADT和Ant编译)自从它创建之日起,1年后就会失效。

2)debug.keystore在不同的机器上所生成的可能都不一样,就意味着如果你换了机器进行apk版本升级,那么将会出现上面那种程序不能覆盖安装的问题,相当于软件不具备升级功能!

6. Zipalign简单优化

6.1 为什么要优化

Android SDK中包含一个“zipalign”的工具,它能够对打包的应用程序进行优化。在你的应用程序上运行zipalign,使得在运行时Android与应用程序间的交互更加有效率。因此,这种方式能够让应用程序和整个系统运行得更快。我们强烈推荐在新的和已经发布的程序上使用zipalign工具来得到优化后的版本——即使你的程序是在

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top