文档章节

APP签名

yolinfeng
 yolinfeng
发布于 2015/02/24 11:17
字数 1112
阅读 22
收藏 0

1.为何需要签名
  每个发布的应用都有自己的一个唯一合法的ID,这个就是应用自身的签名,签名可以保证你软件升级的一致性,使用相同签名的应用可以实现覆盖安装,而不一致的签名将无法共享使用数据,也即是无法覆盖安装,这样可以防止别人篡改,盗用开发者的应用,造成对开发者利益的损害。那么如何为自己的应用进行签名呢?
 
2.APK签名之两步走
  a.创建一个key
  b.使用步骤a中产生的key对apk签名
 
3.具体操作
  方法一:命令行下对apk签名
   (笔者之前使用1.7版本的sdk用该方法签名发现签名后的文件无法正常安装,1.6版本是没有任何问题的,所以1.7的朋友建议使用方法二)
  创建key,需要用到java的keytool.exe工具(该工具位于java环境的安装目录下jdk1.6.0_24\jre\bin,不同jdk版本可能略有差异),使用产生的key对apk签名用到的是jarsigner.exe (位于安装目录下的jdk1.6.0_24\bin),如果你正确安装了java环境,并配置了正解的环境变量,那么你可以直接打开运行命令窗口输入
 
C:\Users\CodeApe> keytool -genkey -alias demo.keystore -keyalg RSA -validity 40000 -keystore demo.keystore
说明: -genkey 产生密钥
-alias demo.keystore key的别名 demo.keystore
-keyalg RSA 使用RSA算法对签名加密
-validity 40000 证书有效期限4000天
-keystore demo.keystore 生成key的存放路径,你可以生成到指定路径(例如:D:\demo.keystore 在D盘根目录生成key文件,文件名为demo.keystor,如果不指定绝对路径将在当前cmd所在目录生成key文件)

C:\Users\CodeApe> jarsigner -verbose -keystore demo.keystore -signedjar demo_signed.apk demo.apk demo.keystore
说明: -verbose 输出签名的详细信息
-keystore demo.keystore 使用key的绝对路径,就是在第一步中生成的key
-signedjar demor_signed.apk demo.apk demo.keystore 正式签名,三个参数中依次为签名后产生的文件demo_signed,要签名的文件demo.apk和密钥库demo.keystore

  方法二:使用Eclipse导出带签名的apk
  Ps:这个是使用adt插件导出已经签名的apk文件,简单快捷,强烈推荐该方法!!
 
1、右键工程,选择Export,出现如下窗口,选择Export Android Application ==》 next!
2、选择需要签名的工程(Android Application)
3、创建一个新的key文件(如果已经有key文件可以选择第一个)
4、输入新的key的信息,alias(别名)、password(key密码,请牢记)、Confirm(确认key密码)、validity(证书有效期,单位为年)、First and Last Name(姓名)、Orgnizational Unit(公司单位)、Organization(组织)、City or Locality(县、市区)、State or Province(省份)、Country Code(国家的两位英文缩写)
5、生成的签名apk文件的存放路径
6、生成的key文件和已经签名好的apk文件
7、如果是已经存在的key文件签名,第三步改成如下就行了:
至此apk文件的签名介绍完毕,你的签名文件也可以拿出去工用户使用了,但是谷歌还提供一个优化工具对你的apk文件进行优化,用法介绍如下:
 
4.签名之后,用zipalign(压缩对齐)优化你的APK文件。
  未签名的apk不能使用,也不能优化。签名之后的apk谷歌推荐使用zipalign.exe(位于android-sdk-windows\tools目录下)工具对其优化:
C:\Users\CodeApe> zipalign -v 4 demo_signed.apk final.apk
 
  这样,zipalign能够使apk文件中未压缩的数据在4个字节边界上对齐(一般4个字节是一个性能很好的值),这样android系统就可以使用mmap()(请自行查阅这个函数的用途)函数读取文件,可以在读取资源上获得较高的性能,
  PS:
      1.在4个字节边界上对齐的意思就是指编译器把4个字节作为一个单位来进行读取的数据资源,因此,CPU能够对变量进行较之前不对齐更高效、快速的访问。
      2.对齐的根源:android系统中的Davlik虚拟机使用自己专有的格式DEX,DEX的结构是紧凑的,为了让运行时的性能更好,可以进一步用"对齐"进一步优化,但是大小一般会有所增加。

本文转载自:

共有 人打赏支持
yolinfeng
粉丝 12
博文 196
码字总数 11946
作品 0
珠海
架构师
使用Eclipse给Android App签名打包

签名的步骤: 1、用Eclipse导出要签名的apk 2、创建key(如果有key,可跳过这一步) 3、使用产生的key对apk签名 4、apk优化 1、用Eclipse导出要签名的apk 选择项目,点击右键->Anroid Tools-...

未来程序员
2014/04/02
0
0
[转]给apk签名的方法和步骤

1.签名的意义   为了保证每个应用程序开发商合法ID,防止部分开放商可能通过使用相同的Package Name来混淆替换已经安装的程序,我们需要对我们发布的APK文件进行唯一签名,保证我们每次发布...

603912006
2016/11/06
7
0
生成Android App签名(为APK签名)

1.签名的意义 为了保证每个应用程序开发商合法ID,防止部分开放商可能通过使用相同的Package Name来混淆替换已经安装的程序,我们需要对我们发布的APK文件进行唯一签名,保证我们每次发布的版...

带梦想一7飞
2012/08/19
0
0
使用 dumpdecrypted 砸壳时出现 Killed:9 的问题

这样一般是由于 没有进行签名导致的,我们需要对它进行签名,下面是签名的方法 查看本地可用的证书 这里可以查看 Mac 上已经安装的开发者证书 dylib 签名 成功以后,这个 就已经是签名后的东...

SSBun
07/25
0
0
Android App的签名打包(晋级篇)

Andriod应用程序如果要在手机或模拟器上安装,必须要有签名! 1.签名的意义   为了保证每个应用程序开发商合法ID,防止部分开放商可能通过使用相同的Package Name来混淆替换已经安装的程序...

等待流星
2014/04/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

java并发备忘

不安全的“先检查后执行”,代码形式如下: if(条件满足){ //这里容易出现线程安全问题//doSomething}else{//doOther} 读取-修改-写入 原子操作:使用CAS技术,即首先从V中读取...

Funcy1122
今天
0
0
SpringBoot2.0 停机

最近新建了个SpringBoot2.0的项目,因为原来一直使用的是传统的Tomcat部署war包的形式,所以这次SpringBoot内置Tomcat部署jar包的时候遇到了很多问题。其中一个就是因为没有外置的Tomcat容器...

Canaan_
昨天
0
1
Confluence 6 外部参考

一个外部参考的意思是任何站点链接到你 Confluence 的实例。任何时候当 Confluence 的用户单击这个外部链接的时候,Confluence 可以记录这次单击为参考。 在默认的情况下,外部链接的参考链接...

honeymose
昨天
0
0
Android中的设计模式之抽象工厂模式

参考 《设计模式解析》 第十一章 Abstract Factory模式 《设计模式:可复用面向对象软件的基础 》3.1 Abstract Factory 抽象工厂 对象创建型模式 《Android源码设计模式解析与实战》第6章 创...

newtrek
昨天
0
0
Redis | 地理空间(GEO)的一个坑

Redis的地理空间(Geo)是个好东西,轻轻松松的就可以把地图描点的问题处理了, 最近却遇到一个坑...Redis采用的Msater-Slave模式, 运用GEORADIUS在salve读取对应的数据,新增了从节点但是从不返...

云迹
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部