- 浏览: 426085 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
Glogo:
楼主您好,我在试验您的代码的时候发现新开的三个子线程并没有一直 ...
java 高并发 ReentrantLock -- 可重入的锁 -
univasity:
最近发觉也被限速了,投诉一下就好一会~~ 看来明天又要和电信M ...
ADSL上网速度慢 都是帐号限速惹的祸 -
liuyuanhui0301:
java 高并发 ReentrantLock -- 可重入的锁 -
dang_java:
呵.很好的说明文档.
JXTA技术与应用发展 -
helloqidi:
谢谢,学习了
SQL中exists和in的区别
在
Android系统中,所有安装到系统的应用程序都必有一个数字证书,此数字证书用于标识应用程序的作者和在应用程序之间建立信任关系,如果一个
permission的protectionLevel为signature,那么就只有那些跟该permission所在的程序拥有同一个数字证书的应
用程序才能取得该权限。Android使用Java的数字证书相关的机制来给apk加盖数字证书,要理解android的数字证书,需要先了解以下数字证
书的概念和java的数字证书机制。Android系统要求每一个安装进系统的应用程序都是经过数字证书签名的,数字证书的私钥则保存在程序开发者的手
中。Android将数字证书用来标识应用程序的作者和在应用程序之间建立信任关系,不是用来决定最终用户可以安装哪些应用程序。这个数字证书并不需要权
威的数字证书签名机构认证,它只是用来让应用程序包自我认证的。 同一个开发者的多个程序尽可能使用同一个数字证书
,这可以带来以下好处。 (1)有利于程序升级,当新版程序和旧版程序的数字证书相同时,Android系统才会认为这两个程序是同一个程序的不同版本。如果新版程序和旧版程序的数字证书不相同,则Android系统认为他们是不同的程序,并产生冲突,会要求新程序更改包名。 (2)有利于程序的模块化设计和开发。Android系统允许拥有同一个数字签名的程序运行在一个进程中,Android程序会将他们视为同一个程序。所以开发者可以将自己的程序分模块开发,而用户只需要在需要的时候下载适当的模块。 (3)
可以通过权限(permission)的方式在多个程序间共享数据和代码。Android提供了基于数字证书的权限赋予机制,应用程序可以和其他的程序共
享概功能或者数据给那那些与自己拥有相同数字证书的程序。如果某个权限(permission)的protectionLevel是signature,
则这个权限就只能授予那些跟该权限所在的包拥有同一个数字证书的程序。 在签名时,需要考虑数字证书的有效期
: (1)数字证书的有效期要包含程序的预计生命周期,一旦数字证书失效,持有改数字证书的程序将不能正常升级。 (2)如果多个程序使用同一个数字证书,则该数字证书的有效期要包含所有程序的预计生命周期。 (3)Android Market强制要求所有应用程序数字证书的有效期要持续到2033年10月22日以后。 Android数字证书包含以下几个要点:
(1)所有的应用程序都必须有数字证书
,Android系统不会安装一个没有数字证书的应用程序 (2)Android程序包使用的数字证书可以是自签名的
,不需要一个权威的数字证书机构签名认证 (3)如果要正式发布一个Android ,必须使用一个合适的私钥生成的数字证书来给程序签名
,而不能使用adt插件或者ant工具生成的调试证书来发布。 (4)数字证书都是有有效期
的,Android只是在应用程序安装的时候才会检查证书的有效期。如果程序已经安装在系统中,即使证书过期也不会影响程序的正常功能。 (5)Android使用标准的java工具 Keytool and Jarsigner
来生成数字证书,并给应用程序包签名。 (6)使用zipalign
优化程序。 Android
系统不会安装运行任何一款未经数字签名的apk程序,无论是在模拟器上还是在实际的物理设备上。Android的开发工具(ADT插件和Ant)都可以协
助开发者给apk程序签名,它们都有两种模式:调试模式(debug mode)和发布模式(release mode)。 在调试模式下,android的开发工具会在每次编译时使用调试用的数字证书给程序签名,开发者无须关心。 当要发布程序时,开发者就需要使用自己的数字证书给apk包签名,可以有两种方法。 (1)在命令行下使用JDK中的和Keytool(用于生成数字证书)和Jarsigner(用于使用数字证书签名)来给apk包签名。 (2)使用ADT Export Wizard进行签名(如果没有数字证书可能需要生成数字证书)。 使用Keytool和Jarsigner给程序签名
命令:keytool -genkey -v -keystore android.keystore -alias android -keyalg RSA -validity 20000
该
命令中,-keystore ophone.keystore 表示生成的证书,可以加上路径(默认在用户主目录下);-alias ophone
表示证书的别名是ophone;-keyalg RSA 表示采用的RSA算法;-validity 20000表示证书的有效期是20000天。 此时,我们会在互用主目录下看到ophone.keystore,即我们刚刚创建的证书。 接着对程序进行签名: jarsigner用法
: [选项] jar 文件别名 执行:jarsigner -verbose -keystore android.keystore -signedjar android123_signed.apk android123.apk
android
就
可以生成签名的apk文件,这里输入文件android123.apk,最终生成android123_signed.apk为Android签名后的
APK执行文件。下面提示输入的密码和keytool输入的一样就行了。(不过在我的JDK目录下没有找到jarsigner这个程序,不知道是怎么回
事) 使用ADT Export Wizard进行签名
应用程序(apk)签名,在EC中,右键单击应用程序工程,如图选择 选择证书的存放路径,填写相关资料,完成,即可生成被签名的apk文件。如下图所示: 如上图所示,我们可以看到也可以在这里选择”Create new keystore“来创建一个证书。输入密码,点击下一步,填写相关信息,如下图所示。 使用zipalign优化APK
根据官方文档的描述,Android系统中Application的数据都保存在它的APK文件中,同时可以被多个进程访问,安装的过程包括如下几个步骤: zipalign
优化的最根本目的是帮助操作系统更高效率的根据请求索引资源,将resource-handling code统一将Data structure
alignment(数 据结构对齐标准:DSA)限定为4-byte boundaries。如果不采取对齐的标
准,处理器无法准确和快速的在内存地址中定位相关资源。目前的系统中使用fallback
mechanism机制处理那些没有应用DSA标准的应用程序,这的确大大的方便了普通开发者无需关注繁琐的内存操作问题。但是相反,对于这样的应用程序
将给普通用户带来一定的麻烦,不但影响程序的运行的效率,而且使系统的整体执行效率下降和占用大量不必要的内存资源,甚至消耗一定的电池资源
(battery life)。 命令行方式手动优化
: 使用ADT自动优化:
综上所述,可以使用Keytool、Jarsigner、zipalign 给程序签名并优化程序,这样就需要三个不同的工具:
keytool -genkey -v -keystore android.keystore -alias android -keyalg RSA -validity 20000
jarsigner -verbose -keystore android.keystore -signedjar android123_signed.apk android123.apk android
zipalign -v 4 android123_signed.apk android123_signed_aligned.apk
当然,也可以通过ADT插件中Export Signed Application Package…来执行,图形界面更为简单、形象、直观。
参考:blog.csdn.net/zgfee/archive/2009/11/11/4796831.aspx Android SDK:androidappdocs.appspot.com/guide/publishing/app-signing.html android123.com.cn/androidkaifa/173.html yarin.javaeye.com/blog/549280 androidres.com/index.php/2009/10/18/use-zipalign-to-optimize-your-application-packages/
jarsigner -verify [选项] jar 文件
发表评论
-
序列化:serializable,hessian,protobuf性能对比
2011-10-31 17:08 1245分布式应用系统中,系统之间的通讯的质量决定了系统的可用性 ... -
JAR 文件揭密
2011-10-18 01:28 887JAR 文件是什么? ... -
SSL双向认证java实现
2011-10-17 23:49 1017本文通过模拟场景,介绍SSL双向认证的java实现默认的情况下 ... -
Benchmark Analysis: Guice vs Spring
2011-04-19 14:35 1038The original link can be found ... -
Java Network Launching Protocol
2011-04-18 17:43 907在java开发的早期,重点被放在了客户端开发。语言中对于app ... -
NIO 包及工作原理
2011-03-11 11:14 1734NIO 包及工作原理 针对 ... -
使用Java NIO编写高性能的服务器
2011-03-11 01:19 787从JDK 1.4开始,Java的标 ... -
RMI, RMI-IIOP,JNDI
2009-05-21 17:31 15001. RMI-IIOP(Java Remote ... -
企业中的 RMI-IIOP
2009-05-21 17:13 1007RMI 和 CORBA 常被视 ... -
JMX
2009-05-21 15:44 982JMX规范 1.1 J ... -
使用Eclipse IDE的技巧
2009-02-24 11:00 1788使用Eclipse IDE的技巧 作 ... -
spring quartz 动态定时任务
2009-01-22 13:31 4472什么是动态定时任务:是由客户制定生成的,服务端只知道该去执行什 ... -
基于struts+spring+ibatis的轻量级
2009-01-12 16:21 1033基于struts+spring+ibatis的轻量级J2 ... -
Log4j配置实例[经典]
2009-01-12 14:53 1282Log4j配置实例[经典] 0 推荐 ... -
jbpm工作流学习心得
2008-09-19 13:59 1299一,装载流程: 第一种: java 代码 JbpmCo ... -
jbpm请假工作流
2008-09-19 13:56 1846请假流程(备用) 工作中要用到JBPM写工作流,自习的时 ... -
利用JExcel API操作EXCEL文件
2008-09-08 10:52 1466使用Windows操作系统的朋 ... -
jExcel API讲解
2008-09-08 10:51 1488转自:http://jhobby.iteye.com/blog ... -
Tomcat5.0乱码全解决方案
2008-09-02 11:56 1091http://hi.baidu.com/liet2008/bl ... -
Linux_Macintosh 平台下 Eclipse 环境中的 JNI 混合语言调试
2008-08-28 18:27 1486Linux_Macintosh 平台下 Eclipse ...
相关推荐
模块一项目源码(1).rar
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 替换数据可以直接使用,注释清楚,适合新手
<项目介绍> - 使用php实现的一个rbac权限管理微型系统 - 不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 --------
畅玩北海旅游网站 SSM毕业设计 附带论文 启动教程:https://www.bilibili.com/video/BV1GK1iYyE2B
该MATLAB代码使用两步加权最小二乘法通过TDOA技术实现了二维目标定位。它通过随机生成的锚点和目标位置进行模拟,展示了如何通过迭代优化算法来提高位置估计的准确性。代码结构清晰,适合用于理解和实现基于TDOA的定位算法。
服务器可运行。实现文件复制。
基于vue和element-ui实现的可视化表单设计器,使用了最新的前端技术栈,内置了i18n国际化解决方案,可以让表单开发简单而高效。
环境说明: 开发语言:java 框架:ssm jdk版本:jdk1.8 数据库:mysql 5.7+ 数据库工具:Navicat11+ 管理工具:maven 开发工具:idea/eclipse 部署容器:tomcat7+
基于java+sqlserver实现的电子通讯录(带系统托盘)(源码+数据库+系统详细配置方法)
入职资料整理小程序,能够整理入职资料
功能说明: 管理员:管理员使用本系统涉到的功能主要有:首页,个人中心,用户管理,业务员管理,汽车类型管理,租赁汽车管理,汽车租赁管理,汽车归还管理,租赁订单管理,检查信息管理,系统管理等功能。 用户:用户使用本系统涉到的功能主要有:首页,个人中心,汽车租赁管理,汽车归还管理,租赁订单管理,检查信息管理,我的收藏管理等功能。 业务员:业务员使用本系统主要包括首页,个人中心,汽车租赁管理,汽车归还管理,租赁订单管理,检查信息管理等功能。 环境说明: 开发语言:java jdk:jdk1.8 数据库:mysql 5.7+ 数据库工具:Navicat11+ 管理工具:maven 开发工具:idea/eclipse
基于python+Jupyter实现答题卡检测、试题切分、学生考号识别、选择题自动批改+源码+项目文档,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用,详情见md文档~ 项目简介: 多张图连续检测 功能:如果一套试卷的答题卡数量大于1,也支持检测,并且按试题顺序拼凑检测结果(即下面这套试卷假设存在位于第二张答题卡上的第八题,支持连续检测) 2、试题切割 功能: 将答题卡按试题切成一张张图片,并将图片与题序一一对应 程序能知道第六大题存在2张图片 3、学生考号识别 1)切割出学生手写的准考证号 2)识别出学生填充的准考证号 4、选择题自动批改检测 识别结果(key:题序,value:答案的索引): {1: [2], 2: [1], 3: [3], 4: [3], 5: [1], 6: [1], 7: [4], 8: [2], 9: [4], 10: [1], 11: [3], 12: [1], 13: [1], 14: [1], 15: [1]} 选择题自动批改支持以下变化 无论试题的候选项有四个还是五六七八个,都支持识别
StyleControls 5.80.7z
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 替换数据可以直接使用,注释清楚,适合新手
burp 破解工具
使用OpenGL实现渲染场景的shadow map。
在线画展系统 SSM毕业设计 附带论文 启动教程:https://www.bilibili.com/video/BV1GK1iYyE2B
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 替换数据可以直接使用,注释清楚,适合新手
图片转PDF(不旋转),服务器可用,后缀名要标注好,支持常见的图片格式。
MCU:dsp28335;主电路使用simulink仿真,控制电路使用dsp进行运行;中间使用串口进行;具体请见博文: https://blog.csdn.net/qq_42151264/article/details/124994055?csdn