关于Android的应用程序的发布的学习(一)

上一次写了一篇关于android应用程序打包成apk文件的签名,地址:http://blog.csdn.net/zqiang_55/article/details/6939170

最近再看sdk的时候发现其实在sdk中又了详细的少说明,现在将主要的翻译如下:

在Dev Gudie标签页中的Publishing模块

一给应用程序签名

概要:

Android系统要求所有安装的应用程序都必须要有数字签名证书,数字签名证书的私钥由应用程序开发者持有。Android系统通过数字签名来确认应用程序的开发者和在应用程序直接建立关联(程序升级时使用)。

 

以下几点对于理解android应用程序签名非常重要

1.      所有的应用程序必须签名。Android系统不会安装没有签名的应用程序

2.      可以使用自己的签名证书给应用程序签名。不必非得使用官方证书

3.      当你发布应用程序给最终用户的时候,必须使用合法的私钥。你不能使用sdk tools里的debug key来给发布的应用程序签名

4.      Android检查签名证书的有效日期只根据应用程序的安装时间。如果程序安装之后签名证书过期,那么应用程序也能正常运行。

5.      你可以使用标准工具—Keytool和Jarsigner—来生成私钥并给.apk文件签名

6.      一旦你给程序签名以后,使用zipalign工具优化最终的apk包

Android系统不会安装或者运行没有经过正确签名的应用程序。这一规律适用于真实设备或者模拟器。因此在设备或者模拟器运行或调试程序时,必须安装签名。

在调试的时候,androidsdk工具帮助你在应用程序上签名。Eclips的ADT插件和Ant编译工具提供了两种签名模式——debug模式和release模式

1.      在开发和测试的时候,可以在debug模式下编译。在debug模式下,编译工具在JDK环境下使用keytool功能通过已知的别名(alias)和密码来产生keystore和key。在每一次编译时,使用debug key来给应用程序签名。因为密码是已知的,在每次编译的时候,都不会有提示

2.      当应用程序准备发布时,必须在release模式下编译,使用私钥签名。有两种方法可寻:

1.      在命令模式下(cmd)使用Keytool和Jarsigner。在这一步,先编译无签名的应用程序。用私钥和Jarsigner给.apk文件手动的签名。如果你没有合适的私钥,可以运行Keytool产生自己的keystore/key。

2.      使用ADT导出向导。在Eclips使用ADT插件开发,可以使用导出向导来编译程序生成私钥,然后给.apk文件签名。在所有的单进程程序镇南关都可以使用导出向导

程序签名后不要忘记使用zipalign给程序做优化。

二.签名策略

程序签名可能会影响程序开发的步骤,特别是要发布多个版本。

一般推荐开发者在整个开发周期用相同的证书给应用程序签名。下面是几个原因

1.      程序升级—如果想给用户无缝隙的升级应用程序,那么你就给升级的应用程序用和原来的程序用相同的证书签名。在安装升级后的应用程序,系统会比较新版本的证书和已存在版本的证书。如果完全匹配,包括比较证书数据和命令,系统会允许升级程序安装。如果不匹配,需要重新签名。在不匹配的情况下,安装的升级程序会是一个完成的心程序,并不会将原来的覆盖掉。

2.      程序的模块性—Android系统允许相同证书签名的应用程序运行在同一个进程中,如果程序运行在同一个进程中,系统会认为这是同一个程序。这样你可以以模块的方式来部署应用程序,用户可以只升级相应的模块。

3.      代码/数据通过权限分享—系统提供了基于强制权限签名策略,因此一个程序可以向另外的一个签名的程序暴露自己的功能。

在决定签名策略的时候另外一个需要重要考虑的是签名证书的有效期.

1.      如果对应用程序支持升级,确保key的有效期超过程序的生命周期。推荐有效期为25年或者更多。当key的有效期终止的时候,用户将不能完美的升级程序。

2.      如果用相同的key在多个有明显区别的程序间签名,要确保key的有效期要比所有的应用程序生命周期都要长,也包括将来加入到应用程序的程序。

3.      如果在Android Market发布程序,那么key的有效期的截止日期为2033-10-22。Martet的服务器强制执行这一要求,以保证用户能平稳升级。

在Debug模式下签名

Android编译工具提供了一个debug签名模式使开发和调试程序更简单,同时也是为了满足android要求数字签名。在使用debug模式编译app时,sdk工具自动的调用Keytool生成debug keystore和key。Debug key会自动调用给.apk文件签名,因此没必要在调试的时候用自己的私钥给程序签名。

Sdk tools生成debug keystore/key需要姓名和密码:

·        Keystorename: "debug.keystore"

·        Keystorepassword: "android"

·        Key alias:"androiddebugkey"

·        Keypassword: "android"

CN: "CN=Android Debug,O=Android,C=US

 

太多了,不想翻译了!!累死了!后面大部分是一些命令了,自己看看吧

转载于:https://www.cnblogs.com/wuyida/archive/2011/11/22/6300669.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/410257.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

手动封装js的call和apply和bind和typeof和new方法

我是歌谣 放弃很容易 但是坚持一定很酷 微信公众号关注小歌谣一起学习前后端知识 闲来无事做 不如敲代码今天讲一下js里面的callapply和bind和typeof方法的手动封装由于最近比较忙但是有时间就会记录一下平时学习工作的一些代码用来分享这边就不直接多说开始我们的直接代码书写…

js保留两位小数的函数_使用率低但功能强大的6个Excel函数公式应用技巧解读!...

在Excel函数公式中,有部分函数的使用率是比较低的,但是其功能也是非常强大的。一、Median函数。功能:返回一组数的中值。中值就是一组数的中间数值,如果参数包含的数值是偶数,Median函数将返回位于中间两个值的平均值。…

IP包的生成和发送接口(1)

http://blog.sina.com.cn/s/indexlist_1657348185_2.html IP包的生成和发送接口 (1) Linux内核中有3种基本的IP包生成器, 它们分别为ip_build_xmit(), ip_queue_xmit(), ip_build_and_send_pkt(). ip_build_and_send_pkt()是一简单的IP包头封装接口, 它接照输入包的路由添加一…

.net复习之七

表A: 表B: 1. SELECT * FROM A JOIN B ON A.Id B.Id 將顯示 9 條數據。 Inner join(等值连接)只返回两个表中联结字段相等的行 2. SELECT * FROM A LEFT JOIN B ON A.Id B.Id 將顯示 12 條數據…

原生js实现tab栏切换效果

我是歌谣 放弃很容易 但是坚持一定很酷 微信公众号关注小歌谣一起学习前后端知识 运行效果 首先我们来看一下原生js实现的效果 下面就开始直接上代码了 index.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"&…

线程八大核心+java并发核心知识体系精讲_Java从业者如果不懂这些,面试80%都会挂在这些核心知识上面...

JVM无论什么级别的Java从业者&#xff0c;JVM都是进阶时必须迈过的坎。不管是工作还是面试中&#xff0c;JVM都是必考题。如果不懂JVM的话&#xff0c;薪酬会非常吃亏(近70%的面试者挂在JVM上了)详细介绍了JVM有关于线程、内存模型、JVM运行时内存、垃圾回收与算法、Java中四种…

Ajax技术简单入门

随着Google公司推出的Gmail服务后,越来越多的人开始关注Ajax技术了,所谓Ajax(Asynchronous JavaScript and XML缩写)技术,就是指运用JavaScript和XML在不用刷新Web页的情况下与Web服务器通信的技术&#xff0e;一般来说&#xff0c;使用Ajax技术主要有两个原因&#xff1a;一是…

我所知的javascript之prototype

一&#xff1a;prototype大概概念和用途“prototype”字面翻译是“原型”&#xff0c;是javascript实现继承的主要手段。粗略来说就是&#xff1a;prototype是javascript中的函数(function)的一个保留属性&#xff0c;并且它的值是一个对象&#xff08;我们可以称这个对象为&qu…

哪些模块可用于python性能分析_Python调用C模块以及性能分析

一.c&#xff0c;ctypes和python的数据类型的对应关系ctypes type ctype Python typec_char char 1-character stringc_wchar wchar_t 1-character unicode stringc_byte char int/longc_ubyte unsigned char int/longc_short short int/longc_ushort unsigned short int/longc…

[html] webp与jpg、png比较,它有什么优劣势?如何选择?

[html] webp与jpg、png比较&#xff0c;它有什么优劣势&#xff1f;如何选择&#xff1f; 优势更优的图像数据压缩算法 带来更小的图片体积肉眼识别无差异的图片质量支持有损和无损压缩支持动画 透明色彩丰富 24-bit颜色数劣势存在兼容性问题选择​ 当 图片较少 体积不大 且存…

Alt Gr or Shift

This is interesting. The keyboard here is different from what we always use in China. Characters and layout are different. Hans gave me the password to logon the system. There s a “” character in it. With Chinese keyboard, I will use “Shift 2″ to gener…

Vue之前端页面使用json编辑框

转自: https://blog.csdn.net/Wjhsmart/article/details/85757045 转载于:https://www.cnblogs.com/jiushixihuandaqingtian/p/11310713.html

[html] html5的video如何附带字幕?

[html] html5的video如何附带字幕&#xff1f; <video controls width"400" height"300"> <source src"../hangge.mp4" type"video/mp4"> <track src"hangge.vtt" srclang"zh" kind"subtitl…

window.addeventlistener 不能调用方法_Java入门第十四课:如何定义”方法“

第十四课&#xff0c;学习定义方法。一个对象包含三种最常见的成员&#xff1a;构造器、Field和方法。Field用于定义状态数据&#xff0c;而方法是行为特征的抽象。那么什么是方法呢&#xff1f;在Java中&#xff0c;方法就是用来完成解决某件事情或实现某个功能的办法。方法实…

remmina连接xfce桌面的centos7

vnc无法连到linux server&#xff0c;但ssh可以的解决方法 原文引自&#xff1a;https://blog.csdn.net/h00ahaha/article/details/84440449 今天用vnc连远程服务器&#xff0c;一直给我提示Failed to connect to server.记录下解决该问题的步骤&#xff1a;1 确认ssh能登录&am…

[html] 你有使用过html5的rt标签吗?它有什么应用场景?

[html] 你有使用过html5的rt标签吗&#xff1f;它有什么应用场景&#xff1f; <ruby>汉 <rt>Hn</rt>字 <rt>Z</rt> </ruby>个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大…

深度测试与alpha混合(3)

alpha源混合系数通常设置为D3DBLEND_SRCALPHA&#xff0c;即当前绘制像素的alpha值。目标混合系数设置为D3DBLEND_INVSRCALPHA&#xff0c;即1减去当前绘制像素的alpha值。那么当前绘制像素的alpha值又是如何得到的呢&#xff1f;如果没有使用材质和纹理&#xff0c;当前绘制像…

python开发商城实战_python框架Django实战商城项目之工程搭建

项目说明该电商项目类似于京东商城&#xff0c;主要模块有验证、用户、第三方登录、首页广告、商品、购物车、订单、支付以及后台管理系统。项目开发模式采用前后端不分离的模式&#xff0c;为了提高搜索引擎排名&#xff0c;页面整体刷新采用jinja2模板引擎实现&#xff0c;局…

算法之排序算法-shell排序(移位法)

个人觉得移位法就是借希尔排序进行分组,插入排序进行排序 注释是上一篇的交换法. 而且这种移位排序的真的很快 package com.ebiz.sort;import java.text.SimpleDateFormat; import java.util.Date;/*** author YHj* create 2019-07-30 8:53* shell排序-交换法*/ public class S…

[html] 页面布局时你使用最多的标签是什么?div吗?在什么情况下会使用到div?

[html] 页面布局时你使用最多的标签是什么&#xff1f;div吗&#xff1f;在什么情况下会使用到div&#xff1f; 页面的的整体布局使用<header> <main> <aside> <footer> 等。 一些细分的布局使用<div>&#xff0c;并指定适当的class、role和ari…