提示:本文仅针对Windows平台。有关Linux平台,可以参考Android SDK中的Dev Guide中的Publishing->Sign Your Applications中的Basic Setup for Signing一节。

前提: 1、正确安装JDK,并配置了JAVA_HOME和PATH(JAVA_HOME/bin),因为要使用到jdk/bin下面的两个工具:keytool.exe、jarsigner.exe。

2、安装Android SDK并在PATH中配置了(SDK_HOME/tools),因为要使用到sdk_home/bin下面的一个工具:zipalign.exe

发布应用程序步骤:

1、  查看要发布的应用程序是否已经过以下必须步骤或包含以下必要信息:

*在真机上进行测试

*考虑在应用程序中添加最终用户协议

*考虑添加授权支持

*指定一个图标和标签在应用程序的Manifest.xml文件中定义

*清除调试日志等信息

*确定你发布的版本

*如果应用程序使用到MapView,则需要注册一个Map api密钥

2、  数字签名:

生成证书,命令行:$ keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000

签名,命令行:$ jarsigner -verbose -keystore my-release-key.keystore my_application.apk alias_name

验证是否已签名,命令行:$ jarsigner -verify -verbose -certs my_application.apk

优化改善应用程序供发布,命令行:$zipalign -v 4 your_project_name-unaligned.apk your_project_name.apk

创建数字证书需要提供的信息有:证书名称:

证书密码:

别名:

名字:

单位名称:

组织名称:

城市名称:

国家名称:

密钥主密码:

3、  发布应用程序。

发布到Google Android Market:market.android.com

*创建Google Market帐号,注册成为开发人员。(需通过信息卡支付注册费25美元)

*注册成功后,上传应用程序。点击发布后,用户在Google Android Market中就能够下载使用

国内的Android应用市场

商店名称

网址

机锋市场

http://www.gfan.com/app/amarket/

可以自助上传

爱米软件商店

http://aimi8.com/download

可以自助上传

优亿市场

http://www.eoemarket.com/

可以自助上传

掌上应用汇

http://www.appchina.com/about.html

可以自助上传

安卓市场

http://www.hiapk.com/bbs/Market/index0.htm

可以自助上传

安智市场

http://market.goapk.com/download.php

可以自助上传

开奇商店

http://www.kaiqi.com/tianyinhero.html

N多市场

http://nduoa.com/apk/detail/4000

可以自助上传

安卓星空

http://www.starandroid.com/apkclient

可以自助上传

巴士商店

http://android.tgbus.com/Ashop/

XDA市场

http://android.xda.cn/detail.php?swid=157

安丰下载

http://www.anfone.com/

历趣安卓市场

http://rj.liqucn.com/111/11114.shtml

联想应用

tp://www.lenovomm.com/appstore/

芒果有渠道

欧米

http://app.mobiomni.com/

可以自助上传

HTC市场                     http://htc.appstoreconnect.com/

中国联通沃商店         http://store.wo.com.cn/

1.Eclipse中,选择Android Tools->Export Unsigned Application Package... , 接下来,系统会提示你输入apk文件的保存地址。这样我们就编译生成了发布版的未签名的apk文件. eg.sdialer.apk

2.完成了发布版的编译,接下来是获取私钥,会用到JDK下的两种工具:keytool和jarsigner. keytool是生成私钥的工具。

keytool命令的解释:
-genkey                                   产生一个密钥对(公钥和私钥)

-v                                        开启详细输出

-keystore<keystore-name>.keystore         包含私钥的keystore名称

-storepass<password>                      keystore的密码。安全起见,通常建议不要在命令行输入这个选项,如果你不提供这个选项,keytool就会提示你输入密码,这样你的密码就不会保存在shell历史中。

-alias<alias_name>                        密钥的别名
-keyalg<alg>                              产生密钥的加密算法,可以采用DSA和RSA中的一种

-dname                                    用于描述密钥的产生者。这个值将作为自签名证书中的发布者。如果你此时没有输入,那么在执行签名时,jarsigner会提示你输入dname(distinguished  name)

-validity                                 密钥的有效期,这里以天来计算。我们通常建议大于10000天

-keypass<password>                        密钥的密码,安全起见,通常建议不要在命令行输入这个选项,如果你不提供这个选项,keytool就会提示你输入密码,这样你的密码就不会保存在shell历史中。

jarsigner命令解释:

-keystore                          包含私钥的keystore
<keystore-name>.keystore

-verbose                           开启详细输出

-storepass<password>               keystore的密码,安全起见,通常建议不要在命令行输入这个选项,如果你不提供这个选项,jarsigner就会提示你输入密码,这样你的密码就不会保存在shell历史中。

-keypass<password>                 密钥的密码,安全起见,通常建议不要在命令行输入这个选项,如果你不提供这个选项,jarsigner就会提示你输入密码,这样你的密码就不会保存在shell历史中。

eg.
keytool -genkey -v -keystore s-dialer.keystore -alias sdialer_name -keyalg RSA -validity 10000
输出一个s-dialer.keystore,密钥别名为sdialer_name。有了密钥,我们就可以用它来进行签名。签名工具是jarsigner.
eg. jarsigner -verbose -keystore s-dialer.keystore sdialer.apk sdialer_name
这样,就为应用程序sdialer.apk完成了签名

应用程序的版本
Android应用程序主要通过androidmanifest.xml中的android:versionCode和android:versionName来实现版本管理的

如何用eclipse打签名包:

1.Eclipse工程中右键工程,弹出选项中选择 android工具-生成签名应用包:

2.选择需要打包的android项目工程:

3.如果已有私钥文件,选择私钥文件输入密码,如果没有参见第6和7步创建私钥文件:

4.输入私钥别名和密码:

5.选择APK存储的位置,并完成设置 开始生成:

6.没有私钥文件的情况,创建私钥文件:

7.输入私钥文件所需信息,并创建:

*自己的一点补充:SDK的安装目录最后不要有中文和空格,否则会出现不必要的错误。如果你的安装路径包含Program Files(有空格),用ADT打包会报错,Ant方式打包的也会报错,没关系,不用重装,解决方法:配置SDk环境变量和在Eclipse中配置SDK路径的时候把Program Files改为Progra~1即可。(而且改成其他的都不行,只能是Progra~1,不信试试,这是Dos的规格)。

发布Android应用程序过程相关推荐

  1. 发布Android应用程序过程GOOD

    网上关于这方面的文章太多啦,这里我就写的简单一些吧. 提示:本文仅针对Windows平台.有关Linux平台,可以参考Android SDK中的Dev Guide中的Publishing->Si ...

  2. 如何发布你的Android应用程序

    到目前为止,在Android交易市场(Android Market)里,已经有我的2个应用程序了,所以,我想写出一点关于Android应用程序发布过程的东西,用来告诉那些想发布自己的应用程序的朋友们, ...

  3. Android 应用程序发布流程注意事项(整理)

    一点关于Android应用程序发布过程的东西,用来告诉那些想发布自己的应用程序的朋友们,在发布过程中会遇到哪些的事情. (1)       发布应用程序之前,首先要做的事是为你的应用做数字化签名认证. ...

  4. Android应用程序签名过程和解析过程分析

    在正式解释Android应用程序签名过程之前,作为铺垫,还得先讲讲最基本的一些概念. 非对称加密算法 非对称加密算法需要两个密钥:公开密钥(简称公钥)和私有密钥(简称私钥).公钥与私钥是一对,如果用公 ...

  5. Android应用程序签名过程和解析过程

    非对称加密算法 非对称加密算法需要两个密钥:公开密钥(简称公钥)和私有密钥(简称私钥).公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密:如果用私钥对数据进行加密,那么只有用对应的 ...

  6. Android应用程序进程启动过程的源代码分析(1)

    Android应用程序框架层创建的应用程序进程具有两个特点,一是进程的入口函数是ActivityThread.main,二是进程天然支持Binder进程间通信机制:这两个特点都是在进程的初始化过程中实 ...

  7. Android应用程序组件Content Provider的启动过程源代码分析(1)

             通过前面的学习,我们知道在Android系统中,Content Provider可以为不同的应用程序访问相同的数据提供统一的入口.Content Provider一般是运行在独立的进 ...

  8. Android应用程序安装过程源代码分析(1)

    Android系统在启动的过程中,会启动一个应用程序管理服务PackageManagerService,这个服务负责扫描系统中特定的目录,找到里面的应用程序文件,即以Apk为后缀的文件,然后对这些文件 ...

  9. Android应用程序绑定服务(bindService)的过程源代码分析

    Android应用程序组件Service与Activity一样,既可以在新的进程中启动,也可以在应用程序进程内部启动:前面我们已经分析了在新的进程中启动Service的过程,本文将要介绍在应用程序内部 ...

最新文章

  1. java线程开启不了_Java中多线程启动,为什么调用的是start方法,而不是run方法?...
  2. 将Android实例导入project
  3. infor wms 项目启动_全一,企业物流定制专家——企业客户项目管理流程解析
  4. YbtOJ-变量观测【鸽笼原理】
  5. timer控件的使用
  6. html 手机分辨率,移动端各种分辨率手机屏幕----适配方法集锦
  7. qq浏览器翻译功能启用划词插件教程
  8. css3三角形兼容_css3三角箭头的使用和兼容【原创】
  9. 数据库事务4种隔离级别及7种传播行为(三)
  10. 打印流(PrintStream)_概述和使用
  11. 【Ubuntu】安装H.264解码器
  12. 非常有用的150个生活小常识
  13. flutter 上滑悬浮吸顶
  14. 光波传输的角谱理论【理论,实例及matlab代码】
  15. 考研英语 —— 语法和长难句 (2021-07-30)
  16. MATLAB:三阶矩阵约当阵,能控,能观标准型转化
  17. 指定IDEA的字符编码
  18. Java基础 DAY07
  19. CSS和HTML笔记11.18
  20. MySQL数据库8(十八)用户权限管理

热门文章

  1. vue+Element ui 实现照片墙
  2. Tomcat 幽灵猫任意文件读取漏洞(CVE-2020-1938)
  3. minix模拟android,MINIX NEO Z64小型PC上市,预装Android OS
  4. 【4D毫米波雷达技术发展趋势分析】
  5. 使用python批量给图片重命名
  6. 求导与原函数的奇偶性互换证明
  7. 阅读《惰者集》《用数学的语言看世界》感悟
  8. 什么是进程➡进程调度
  9. OSG从高程图创建地形-可运行
  10. 方形线圈绕线难点及解决办法