为了保证每个应用程序开发商合法ID,防止部分开放商可能通过使用相同的Package

Name来混淆替换已经安装的程序,我们需要对我们发布的APK文件进行唯一签名,保证我们每次发布的版本的一致性(如自动更新不会因为版本不一致而无法安装)。

在这里介绍两种签名的方法如下:

1、在命令行对apk签名:

创 建key,需要用到keytool.exe (位于C:\Program

Files\Java\jdk1.6.0_10\bin目录下),使用产生的key对apk签名用到的是jarsigner.exe

(位于C:\Program

Files\Java\jdk1.6.0_10\bin目录下),把上两个软件所在的目录添加到环境变量path后,打开cmd输入

C:\Documents and Settings\mzba>keytool

-genkey -alias demo.keystore -keyalg RSA -validity 40000 -keystore

demo.keystore

相关说明:

-genkey

产生密钥

-alias

demo.keystore 别名 demo.keystore

-keyalg

RSA 使用RSA算法对签名加密

-validity 40000 有效期限4000天

-keystore demo.keystore

C:\Documents and Settings\mzba>jarsigner

-verbose -keystore demo.keystore -signedjar demo_signed.apk

demo.apk demo.keystore

相关说明:

-verbose 输出签名的详细信息

-keystore  demo.keystore 密钥库位置

-signedjar demor_signed.apk demo.apk demo.keystore

正式签名,三个参数中依次为签名后产生的文件demo_signed,要签名的文件demo.apk和密钥库demo.keystore.

意事项:android工程的bin目录下的demo.apk默认是已经使用debug用户签名的,所以不能使用上述步骤对此文件再次签名。正确步骤应该

是:在工程点击右键->Anroid Tools-Export Unsigned Application

Package导出的apk采用上述步骤签名。

2、使用Eclipse导出带签名的apk

首先,选择Export...如下图:

创建密钥库keystore,输入密钥库导出位置和密码,记住密码,下次Use existing keystore会用到。

填写密钥库信息,填写一些apk文件的密码,使用期限和组织单位的信息。

生成带签名的apk文件,到此就结束了。

使用你自己的同一个签名证书,就没有人能够覆盖你的应用程序,即使包名相同,所以影响有:

1) App升级。

使用相同签名的升级软件可以正常覆盖老版本的软件,否则系统比较发现新版本的签名证书和老版本的签名证书不一致,不会允许新版本安装成功的。

2)

App模块化。android系统允许具有相同的App运行在同一个进程中,如果运行在同一个进程中,则他们相当于同一个App,但是你可以单独对他们升级更新,这是一种App级别的模块化思路。

3)

允许代码和数据共享。android中提供了一个基于签名的Permission标签。通过允许的设置,我们可以实现对不同App之间的访问和共享,如下:

AndroidManifest.xml:

其 中protectionLevel标签有4种值:normal(缺省值),dangerous,

signature,signatureOrSystem。简单来说,normal是低风险的,所有的App不能访问和共享此App。dangerous

是高风险的,所有的App都能访问和共享此App。signature是指具有相同签名的App可以访问和共享此App。

signatureOrSystem是指系统image中App和具有相同签名的App可以访问和共享此App,谷歌建议不要使用这个选项,因为签名就足

够了,一般这个许可会被用在在一个image中需要共享一些特定的功能的情况下。

android apk 签名方法,[转载]Android apk签名的两种方法相关推荐

  1. Android学习之为按钮添加事件监听器的两种方法

    为按钮(包括普通按钮和图片按钮等)添加单击事件监听器有两种方法,第一种是利用匿名内部类来实现,第二种是使用onClick属性来实现 1.匿名内部类 使用匿名内部类,我们首先需要在布局文件中给按钮设置i ...

  2. Android设备用指令查看设备mac地址的两种方法

    Android设备可以用如下两种方法查看设备网络信息 1. ifconfig指令 inet addr 是ip地址 HWaddr 是mac地址 wlan0是wifi的mac地址 eth0是设备第一个以太 ...

  3. 【转载】C++创建对象的两种方法

    原文:http://blog.sina.com.cn/s/blog_586b6c050100dhjg.html 在C++里,有两种方法创建对象: 方法一: ClassName object(param ...

  4. python使用方法视频-Python读取视频的两种方法(imageio和cv2)

    用python读取视频有两种主要方法,大家可依据自己的需求进行使用. 方法一: 使用imageio库,没有安装的可用pip安装或自己下载,安装好后重启终端即可调用. import pylab impo ...

  5. java创建线程的两种方法是_java创建线程的两种方法

    要产生一个线程,有两种方法: ◆需要从Java.lang.Thread类派生一个新的线程类,重载它的run()方法: ◆实现Runnalbe接口,重载Runnalbe接口中的run()方法. 哪种方法 ...

  6. 服务器异地备份共享文件夹方法,mssql数据库异地备份的两种方法

    mssql数据库异地备份的两种方法 /*两种方法的前提:1.本地服务器的sqlserver agent服务保证处于启动状态 2.远程计算机(计算机管理里)建立一个普通权限用户,并为其加上密码(例如用户 ...

  7. java多线程同步的四种方法_java中实现多线程的两种方法

    java多线程有几种实现方法,都是什么?同步有几种实java中多线程的实现方法有两种:1.直接继承thread类:2.实现runnable接口:同步的实现方法有五种:1.同步方法:2.同步代码块:3. ...

  8. java数组去重方法是,java数组去重的两种方法

    我们对于数组元素的使用,有时候在创建数组的初期,并没有考虑过元素的重复问题.当我们想要不重复元素的数组时,就要再进行一步去重的工作.数组的去重有两种方法可以实现,一个是循环比较,另一个是hashSet ...

  9. android中默认短信,android开发中设置默认短信应用的两种方法

    第一种:利用反射实现的无弹窗设置 public static final String CLASS_SMS_MANAGER = "com.android.internal.telephony ...

  10. android笔记之在WebView中显示ProgressBar的两种方法

    http://blog.csdn.net/liuzhidong123/article/details/6450334 本文基于Creative Commons Attribution 2.5 Chin ...

最新文章

  1. ffmpeg命令行map参数的使用
  2. [云炬创业学笔记]第二章决定成为创业者测试2
  3. oracle易忘函数用法(2)
  4. spring boot配置文件【application.yml】常见问题之一,未添加空格
  5. 各种加密算法用法及作用
  6. php父类继承子类_php有多态吗 多态都有什么好处?理解好多态往往能事半功倍...
  7. S/4HANA Extension field的UI visible checkbox逻辑
  8. 荣耀v10Android9新功能,荣耀10、荣耀V10开启安卓9.0内测 日常领跑行业
  9. 电信业的100个随想
  10. 一套通用的后台管理系统Base Admin 前端:layui 后端:java
  11. apusic6.0需要新项目需要改动文件
  12. SpringBoot+SpringAOP+Java自定义注解+mybatis实现切库读写分离
  13. WIN7 Activation,完美激活Windows 7,开机无字符,无OEM信息
  14. “十三五”输电通道规模倍增 重点建设配电网
  15. 质心公式_卢瑟福散射公式
  16. 利用css实现div背景颜色动态渐变
  17. 《自控力》第七章读书笔记
  18. IE10访问Apache2.4卡死的问题
  19. leetcode 1419 数青蛙
  20. 图书馆管理信息系统的用例图和类图

热门文章

  1. python创建数据集_利用 python 在本地数据集创建训练集和测试集
  2. python的matplotlib常用绘图函数
  3. openfire--好友管理实现好友添加及分组管理
  4. STATA修改外部命令存储路径
  5. Android10 高通平台 softap热点基本流程2
  6. 【LeetCode】二叉树的最大深度
  7. python射线法判断点是否在多边形内
  8. python学籍注册小程序
  9. php通过curl发送xml数据,并获取XML
  10. 亚马逊云科技 Build On---基于Serverless 构建创新零售应用