Android正式签名打包的过程
来源:互联网 发布:黑帽子数据 编辑:程序博客网 时间:2024/04/30 11:55
1. 为什么要签名?
开发Android的人这么多,完全有可能大家都把类名,包名起成了一个同样的名字,这时候如何区分?签名这时候就是起区分作用的。
2)
由于开发商可能通过使用相同的Package Name来混淆替换已经安装的程序,签名可以保证相同的名字,但是签名不同的包不被替换。
APK如果使用一个key签名,发布时另一个key签名的文件将无法安装或覆盖老的版本,这样可以防止你已安装的应用被恶意的第三方覆盖或替换掉。
3)
签名其实也是开发者的身份标识。交易中抵赖等事情发生时,签名可以防止抵赖的发生(
2.
1)
2)
3)
4)
5)
6)
7) 如果你用Eclipse里的Runl来生成Apk,是不会混淆代码的,需要手动的打包有正式签名的apk才会混淆代码。
3.签名策略
应用程序签名的一些方面可能会影响应用程序的开发过程, 尤其是当你计划发布多个应用时. 通常情况下, 对于所有开发者而言, 推荐的策略是:在应用程序的整个生命周期,所有的应用程序使用相同的证书签名.
为什么这么做?
1、应用程序升级 – 当发布应用的更新时, 如果想让用户无缝地升级到新版本, 需要继续使用相同的某个或者某一套证书来签名更新包. 当系统安装应用的更新时, 它会比较现有版本和新版本的证书. 如果证书吻合, 包括证书数据和顺序都吻合, 那么系统允许更新. 如果新版本所做的签名不是匹配的, 那么将需要给应用起一个不同的包名 — 在这种情况下, 用户相当于安装了一个完全的新程序.
2、应用程序模块化 – Android允许由相同证书签名的应用程序运行在相同的进程中, 此时系统会将它们作为单个应用程序对待. 在这种方式中, 可以按模块化的方式部署应用, 用户可以根据需要独立地更新每一个模块.
3、代码/数据 的授权共享 – Android 提供模式匹配的权限控制机制, 因此一个应用可以暴露功能给另一个用指定证书签名的应用. 通过用相同证书签名多个应用,以及使用模式匹配的权限检查, 应用程序可以以安全的方式共享代码和数据.
如何设置签名应用的key的有效期?
如果计划为某个单独的应用程序提供更新支持, 那么应该确认key的有效期要比应用的寿命长. 推荐25年或者更长的有效期. 当key的有效期过期, 用户将再也不能无缝地更新到应用程序的新版本.
如果要使用相同的key为多个不同的应用签名, 应当确认key的有效期比所有这些应用的所有版本的生命周期还长, 包括要比将来加到这个套件中的额外的关联应用的生命周期更长.
如果计划将应用程序发布到Android Market, 为应用签名的key的有效期必须在2033年10月22日以后. Market服务器强制执行这个规则, 来保证当新版本可用时, 用户可以无缝地更新Market应用.
当设计的时候, 须牢记这些要点, 以确保使用合适的证书来签名应用程序.
4. 签名的方法过程
1)
a)
eclipse
b)
右键点击项目名,在菜单中选择
具体操作如下:
1、选中要发布的项目右键选中Android Tools然后选择
2、进入后选择要打包的项目点击next
这里有两个选择,如果项目已经有签名证书可以选择使用以前的证书,
如果是第一次签名,还没有签名证书,所以先create new keystore,以后就不再创建了,直接选择已存在的证书。
我们这里先自己创建一个签名证书:
Location:证书要存放的路径
Password:签名证书的密码,以后如果还想使用这个证书就需要输入正确的密码,注意保存好
Confirm:再次输入密码确认
点击next进入创建签名的页面,这里我们需要填写的信息包括:别名,密码,有效期,姓名,组织,组织名称,所在城市,所在省份,国家等,然后next。
选择你要存储打包后的apk 的路径后点击finish:
这样就生成了一个打包好有正式签名的apk和签名证书。
如何查看签名证书?
在你保存签名证书的目录按住shift键同时点击鼠标右键,选择在此打开命令行(或者通过命令一步一步进入保存签名证书的目录):
在命令行中输入命令: keytool -list -v -keystore keystoreName -storepass keystorePassword
就可以查看签名证书中的内容了。
c)
右键点击项目名,在菜单中选择
2)
使用标准的
a)
$ keytool -genkey -keystore keyfile -keyalg RSA -validity 10000 -alias yan
注:
b)
$ jarsigner -verbose -keystore keyfile -signedjar signed.apk base.apk yan
注:
c)
$ jarsigner -verify my_application.apk
d)
$ zipalign -v 4 your_project_name-unaligned.apk your_project_name.apk
3)
a)
在源码中编译一般都使用默认签名的,在某源码目录中用运行
$ mm showcommands
Android
$ signapk publickey.x509[.pem] privatekey.pk8 input.jar output.jar
*.x509.pem
build/target/product/security
b)
Android
c)
openssl genrsa -3 -out testkey.pem 2048
其中
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
openssl pkcs8 -in testkey.pem -topk8 -outform DER -out testkey.pk8 -nocrypt
把的格式转换成
5. 签名的相关文件
1)
CERT.SF
MANIFEST.MF
xxx.SF
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/*
6.签名的相关问题
一般在安装时提示出错:
1)
2)
3)
4)
5)
6)
7. 相关工具
1)
在
- Android正式签名打包的过程
- ionic 正式签名打包android
- Android studio 正式签名打包
- Android Studio 正式签名打包
- Android项目打包正式签名apk
- android程序 从打包到签名的过程
- Android studio多渠道打包,同时附上debug运行正式签名的apkAnd自定义渠道apk文件名
- android studio使用gradle打包正式的apk(非签名)
- 多渠道打包正式签名APK
- Android Studio 签名打包过程图解
- Android Studio 签名打包过程图解
- Android Studio 签名打包过程图解
- Android Studio 签名打包过程图解
- Android Studio 签名打包过程图解
- Android签名的过程
- Android 生成正式签名的APK文件
- Android studio debug使用正式的签名
- Android App的签名打包
- MongoDB(2)-基本概念
- Selenium私房菜系列6 -- 深入了解Selenium RC工作原理(1)
- JAVA POST GET
- 客户端Crash一般原因小结
- 25匹马5个跑道问题
- Android正式签名打包的过程
- C++ string类
- matlab中关于转到二值化图像的问题
- Java学习之旅_基础篇_05
- Selenium私房菜系列7 -- 深入了解Selenium RC工作原理(2)
- shirt----spring security的另外一个选贤
- 「专治不明觉厉」之“大数据”
- acm hdu p1040 As Easy As A+B 冒泡升序排列
- DataSupport.order 里变量名要与类里面的大小写保持一致,如submitTime 不能写为 submittime