精华内容
下载资源
问答
  • Android应用程序签名相关的理论知识包括:什么是签名、为什么要应用程序签名、如何应用程序签名等。 1、什么是签名?  如果这个问题不是放在Android开发中来问,如果是放在一个普通的版块,我想大家都知道...

    Android应用程序签名相关的理论知识包括:什么是签名、为什么要给应用程序签名、如何给应用程序签名等。


    1、什么是签名?
         如果这个问题不是放在Android开发中来问,如果是放在一个普通的版块,我想大家都知道签名的含义。可往往就是将一些生活中常用的术语放在计算机这种专业领域,大家就开始迷惑了。计算机所做的事情,或者说编程语言所做的事情,不正是在尽可能地模拟现实吗?所以,计算机中所说的签名和生活中所说的签名在本质上是一样的,它所起到的作用也是一致的!

    2、为什么要给Android应用程序签名?
         如果只能用一句简单的话语来回答这个问题的话,我会说:“这是Android系统所要求的”。
         Android系统要求每一个Android应用程序必须要经过数字签名才能够安装到系统中,也就是说如果一个Android应用程序没有经过数字签名,是没有办法安装到系统中的!Android通过数字签名来标识应用程序的作者和在应用程序之间建立信任关系,不是用来决定最终用户可以安装哪些应用程序。这个数字签名由应用程序的作者完成,并不需要权威的数字证书签名机构认证,它只是用来让应用程序包自我认证的。


    3、为什么我开发的Android应用程序没有做什么签名也能在模拟器和手机上运行?
         你没有给Android应用程序签名并不代表Android应用程序没有被签名。为了方便我们开发调试程序,ADT会自动的使用debug密钥为应用程序签名。debug密钥?它在哪?debug密钥是一个名为debug.keystore的文件,它的位置:
              Ubuntu: ~/.android/debug.keystore (win7: c:/user/.Android/debug.keystore;  xp: C:/Documents and Settings/user/.Android/debug.keystore)
    “user”对应于你自己的windows操作系统用户名,这也就意味着,如果我们想拥有自己的签名,而不是让ADT帮我们签名的话,我们也要有一个属于自己的密钥文件(*.keystore)。


    4、Android应用程序签名步骤
    1)准备工作
         apk的签名工作可以通过两种方式来完成:
         1)通过ADT提供的图形化界面完成apk签名;

               右键项目——》 Android Tools ——》Export Signed Application Package... ——》 打开图形界面
         2)完全通过shell/dos命令来完成apk签名
               我比较喜欢第2)种方式,所以下面将讲解如何通过命令的方式完成apk签名。
               给apk签名一共要用到3个工具,或者说3个命令,分别是:keytool、 jarsigner、 zipalign,下面是对这3个工具的简单介绍:
               1)keytool:生成数字证书,即密钥,也就是上面说到的扩展名为.keystore的那类文件;
               2)jarsigner:使用数字证书给apk文件签名;
               3)zipalign:对签名后的apk进行优化,提高与Android系统交互的效率(Android SDK1.6版本开始包含此工具)
         从这3个工具的作用也可以看出,这3个工具的使用顺序。通常我们自己所开发的所有应用程序,都是使用同样的签名,即使用同一个数字证书,这就意味着:如果你是第一次做Android应用程序签名,上面的3个工具都将用到;但如果你已经有数字证书了,以后再给其它apk签名时,只需要用到jarsigner和zipalign就可以完成。
         为了方便使用上面3个命令,首先需要将上面3个工具所在路径添加到环境变量path中(我说的是为了方便使用,没有说必须要这么做)。怎么配置环境变量请参见我先前的博客(Windows 或 Ubuntu),这里需要说一下这3个工具默认所在的路径:
               1)keytool:该工具位于jdk安装路径的bin目录下;
               2)jarsigner:该工具位于jdk安装路径的bin目录下;
               3)zipalign:该工具位于Android-sdk-windows/tools/目录下
         不知道大家是否注意到keytool和jarsigner两个工具是jdk自带的,也就意味着生成数字证书和文件签名不是Android的专利;另外从字面上理解jarsigner也能猜得出该工具主要是用来给jar文件签名的。


    2)生成未经签名的apk文件
         既然我们要自己对apk进行签名,就不再需要ADT默认帮我们签名了。如何得到一个未经签名的apk文件呢?打开Eclipse,在Android工程名称上点击右键,依次选择“Android Tools” - “Export Unsigned Application Package ...”,然后选择一个存储位置保存即可。这样就得到了一个未经签名的apk文件。


    3)使用keytool工具生成数字证书
         keytool -genkey -v -keystore it-homer.keystore -alias it-homer.keystore -keyalg RSA -validity 20000
    说明:
         1)keytool是工具名称,-genkey意味着执行的是生成数字证书操作,-v表示将生成证书的详细信息打印出来,显示在dos窗口中;
         2)-keystore  it-homer.keystore 表示生成的数字证书的文件名为“ it-homer.keystore”;
         3)-alias  it-homer.keystore 表示证书的别名为“ it-homer.keystore”,当然可以不和上面的文件名一样;
         4)-keyalg RSA 表示生成密钥文件所采用的算法为RSA;
         5)-validity 20000 表示该数字证书的有效期为20000天,意味着20000天之后该证书将失效
    在执行上面的命令生成数字证书文件时,会提示你输入一些信息,包括证书的密码,示例如下:


    4)使用jarsigner工具为Android应用程序签名
         jarsigner -verbose -keystore  it-homer.keystore -signedjar notepad_signed.apk notepad.apk  it-homer.keystore
    说明:
         1)jarsigner是工具名称,-verbose表示将签名过程中的详细信息打印出来,显示在dos窗口中;
         2)-keystore  it-homer.keystore 表示签名所使用的数字证书所在位置,这里没有写路径,表示在当前目录下;
         3)-signedjar notepad_signed.apk notepad.apk 表示给notepad.apk文件签名,签名后的文件名称为notepad_signed.apk;
         4)最后面的 it-homer.keystore 表示证书的别名,对应于生成数字证书时-alias参数后面的名称


    5)使用zipalign工具优化已签名的apk(非必须但建议这么做)
         zipalign -v 4 notepad_signed.apk notepad_signed_aligned.apk
    说明:
         1)zipalign是工具名称,-v表示在DOS窗口打印出详细的优化信息;
         2)notepad_signed.apk notepad_signed_aligned.apk 表示对已签名文件notepad_signed.apk进行优化,优化后的文件名为notepad_signed_aligned.apk

    说明:如果你以前的程序是采用默认签名的方式(即debug签名),一旦换了新的签名应用将不能覆盖安装,必须将原先的程序卸载掉,才能安装上。因为程序覆盖安装主要检查两点:
         1)两个程序的入口Activity是否相同。两个程序如果包名不一样,即使其它所有代码完全一样,也不会被视为同一个程序的不同版本;
         2)两个程序所采用的签名是否相同。如果两个程序所采用的签名不同,即使包名相同,也不会被视为同一个程序的不同版本,不能覆盖安装。

    另外,可能有人可能会认为反正debug签名的应用程序也能安装使用,那也没有必要自己签名了嘛。千万不要这样想,debug签名的应用程序有这样两个限制,或者说风险:
         1)debug签名的应用程序不能在Android Market上架销售,它会强制你使用自己的签名;
         2)debug.keystore在不同的机器上所生成的可能都不一样,就意味着如果你换了机器进行apk版本升级,那么将会出现上面那种程序不能覆盖安装的问题。不要小视这个问题,如果你开发的程序只有你自己使用,当然无所谓,卸载再安装就可以了。但要是你的软件有很多使用客户,这就是大问题了,就相当于软件不具备升级功能!

    原文:http://tech.ddvip.com/2013-01/1357304195188182.html

    展开全文
  • Android应用程序签名相关的理论知识包括:什么是签名、为什么要应用程序签名、如何应用程序签名等。 1、什么是签名?  如果这个问题不是放在Android开发中来问,如果是放在一个普通的版块,我想大家都...

    Android应用程序签名相关的理论知识包括:什么是签名、为什么要给应用程序签名、如何给应用程序签名等。


    1、什么是签名?
         如果这个问题不是放在Android开发中来问,如果是放在一个普通的版块,我想大家都知道签名的含义。可往往就是将一些生活中常用的术语放在计算机这种专业领域,大家就开始迷惑了。计算机所做的事情,或者说编程语言所做的事情,不正是在尽可能地模拟现实吗?所以,计算机中所说的签名和生活中所说的签名在本质上是一样的,它所起到的作用也是一致的!

    2、为什么要给Android应用程序签名?
         如果只能用一句简单的话语来回答这个问题的话,我会说:“这是Android系统所要求的”。
         Android系统要求每一个Android应用程序必须要经过数字签名才能够安装到系统中,也就是说如果一个Android应用程序没有经过数字签名,是没有办法安装到系统中的!Android通过数字签名来标识应用程序的作者和在应用程序之间建立信任关系,不是用来决定最终用户可以安装哪些应用程序。这个数字签名由应用程序的作者完成,并不需要权威的数字证书签名机构认证,它只是用来让应用程序包自我认证的。


    3、为什么我开发的Android应用程序没有做什么签名也能在模拟器和手机上运行?
         你没有给Android应用程序签名并不代表Android应用程序没有被签名。为了方便我们开发调试程序,ADT会自动的使用debug密钥为应用程序签名。debug密钥?它在哪?debug密钥是一个名为debug.keystore的文件,它的位置:
              Ubuntu: ~/.android/debug.keystore (win7: c:/user/.Android/debug.keystore;  xp: C:/Documents and Settings/user/.Android/debug.keystore)
    “user”对应于你自己的windows操作系统用户名,这也就意味着,如果我们想拥有自己的签名,而不是让ADT帮我们签名的话,我们也要有一个属于自己的密钥文件(*.keystore)。


    4、Android应用程序签名步骤
    1)准备工作
         apk的签名工作可以通过两种方式来完成:
         1)通过ADT提供的图形化界面完成apk签名;

               右键项目——》 Android Tools ——》Export Signed Application Package... ——》 打开图形界面
         2)完全通过shell/dos命令来完成apk签名
               我比较喜欢第2)种方式,所以下面将讲解如何通过命令的方式完成apk签名。
               给apk签名一共要用到3个工具,或者说3个命令,分别是:keytool、 jarsigner、 zipalign,下面是对这3个工具的简单介绍:
               1)keytool:生成数字证书,即密钥,也就是上面说到的扩展名为.keystore的那类文件;
               2)jarsigner:使用数字证书给apk文件签名;
               3)zipalign:对签名后的apk进行优化,提高与Android系统交互的效率(Android SDK1.6版本开始包含此工具)
         从这3个工具的作用也可以看出,这3个工具的使用顺序。通常我们自己所开发的所有应用程序,都是使用同样的签名,即使用同一个数字证书,这就意味着:如果你是第一次做Android应用程序签名,上面的3个工具都将用到;但如果你已经有数字证书了,以后再给其它apk签名时,只需要用到jarsigner和zipalign就可以完成。
         为了方便使用上面3个命令,首先需要将上面3个工具所在路径添加到环境变量path中(我说的是为了方便使用,没有说必须要这么做)。怎么配置环境变量请参见我先前的博客(Windows 或 Ubuntu),这里需要说一下这3个工具默认所在的路径:
               1)keytool:该工具位于jdk安装路径的bin目录下;
               2)jarsigner:该工具位于jdk安装路径的bin目录下;
               3)zipalign:该工具位于Android-sdk-windows/tools/目录下
         不知道大家是否注意到keytool和jarsigner两个工具是jdk自带的,也就意味着生成数字证书和文件签名不是Android的专利;另外从字面上理解jarsigner也能猜得出该工具主要是用来给jar文件签名的。


    2)生成未经签名的apk文件
         既然我们要自己对apk进行签名,就不再需要ADT默认帮我们签名了。如何得到一个未经签名的apk文件呢?打开Eclipse,在Android工程名称上点击右键,依次选择“Android Tools” - “Export Unsigned Application Package ...”,然后选择一个存储位置保存即可。这样就得到了一个未经签名的apk文件。

    其中,在这一步,我导出时候报错了,如下:

    他的解决办法如下:

    只要将Run full error check when exporting app前面的勾去掉就可以了。


    3)使用keytool工具生成数字证书
         keytool -genkey -v -keystore it-homer.keystore -alias it-homer.keystore -keyalg RSA -validity 20000
    说明:
         1)keytool是工具名称,-genkey意味着执行的是生成数字证书操作,-v表示将生成证书的详细信息打印出来,显示在dos窗口中;
         2)-keystore  it-homer.keystore 表示生成的数字证书的文件名为“ it-homer.keystore”(it-homer可以取自己的名字);
         3)-alias  it-homer.keystore 表示证书的别名为“ it-homer.keystore”,当然可以不和上面的文件名一样;
         4)-keyalg RSA 表示生成密钥文件所采用的算法为RSA;
         5)-validity 20000 表示该数字证书的有效期为20000天,意味着20000天之后该证书将失效
    在执行上面的命令生成数字证书文件时,会提示你输入一些信息,包括证书的密码,示例如下:


    4)使用jarsigner工具为Android应用程序签名
         jarsigner -verbose -keystore  it-homer.keystore -signedjar notepad_signed.apk notepad.apk  it-homer.keystore
    说明:
         1)jarsigner是工具名称,-verbose表示将签名过程中的详细信息打印出来,显示在dos窗口中;
         2)-keystore  it-homer.keystore 表示签名所使用的数字证书所在位置,这里没有写路径,表示在当前目录下;
         3)-signedjar notepad_signed.apk notepad.apk 表示给notepad.apk文件签名,签名后的文件名称为notepad_signed.apk;
         4)最后面的 it-homer.keystore 表示证书的别名,对应于生成数字证书时-alias参数后面的名称


    5)使用zipalign工具优化已签名的apk(非必须但建议这么做)
         zipalign -v 4 notepad_signed.apk notepad_signed_aligned.apk
    说明:
         1)zipalign是工具名称,-v表示在DOS窗口打印出详细的优化信息;
         2)notepad_signed.apk notepad_signed_aligned.apk 表示对已签名文件notepad_signed.apk进行优化,优化后的文件名为notepad_signed_aligned.apk

    说明:如果你以前的程序是采用默认签名的方式(即debug签名),一旦换了新的签名应用将不能覆盖安装,必须将原先的程序卸载掉,才能安装上。因为程序覆盖安装主要检查两点:
         1)两个程序的入口Activity是否相同。两个程序如果包名不一样,即使其它所有代码完全一样,也不会被视为同一个程序的不同版本;
         2)两个程序所采用的签名是否相同。如果两个程序所采用的签名不同,即使包名相同,也不会被视为同一个程序的不同版本,不能覆盖安装。

    另外,可能有人可能会认为反正debug签名的应用程序也能安装使用,那也没有必要自己签名了嘛。千万不要这样想,debug签名的应用程序有这样两个限制,或者说风险:
         1)debug签名的应用程序不能在Android Market上架销售,它会强制你使用自己的签名;
         2)debug.keystore在不同的机器上所生成的可能都不一样,就意味着如果你换了机器进行apk版本升级,那么将会出现上面那种程序不能覆盖安装的问题。不要小视这个问题,如果你开发的程序只有你自己使用,当然无所谓,卸载再安装就可以了。但要是你的软件有很多使用客户,这就是大问题了,就相当于软件不具备升级功能!

    原文:http://tech.ddvip.com/2013-01/1357304195188182.html

    展开全文
  • 如何Android应用程序签名

    千次阅读 2013-10-09 09:11:44
    Android系统要求所有的程序经过数字签名才能安装,如果没有可用的数字签名,系统将不许安装运行此程序。不管是模拟器还是真实手机。因此,在设备或者是模拟器上运行调试程序之前,必须为应用程序设置数字签名。 ·...
             

    Android系统要求所有的程序经过数字签名才能安装,如果没有可用的数字签名,系统将不许安装运行此程序。不管是模拟器还是真实手机。因此,在设备或者是模拟器上运行调试程序之前,必须为应用程序设置数字签名。

    ·所有的程序都必须签名,没有被签名的程序,系统将不能安装。
    ·可使用自签署证书签署应用程序,无须授权凭证。
    ·系统仅仅会在安装的时候测试签名证书的有效期,如果应用程序的签名是在安装之后才到期,那么应用程序仍然可以正常启用。

    ·可以使用标准工具-Keytool and Jarsigner-生成密钥,来签名应用程序的.apk文件。
    Android SDK 工具可以在调试时给应用程序签名。ADT插件和Ant编译工具都提供了两种签名模式-debug模式和release模式
    ·debug模式下,编译工具使用JDK中的通用程序Keytool通过已知方法和密码创建秘锁和密钥。每次编译的时候,工具使用debug密钥签名应用程序的.apk文件。因为密码是已知的,工具不需要在每次编译的时候提示输入密锁和密钥。
    ·当应用程序调试完毕准备要发布release版本时,可以在release模式下编译。release模式下,编译工具不会将.apk文件签名。需要自己用Keytool生成密钥和密锁,再用JDK中的Jarsigner工具给.apk文件签名。

    签名基本设置
    首先设置JAVA_HOME环境变量,告诉SDK如何找到Keytool,或者可以在Windows 系统环境变量PATH变量中添加Keytool的JDK路径。
    在发布release版本时,从Package面版上按选中你的project,按鼠标右键,依次选择Android Tools、Export Application Package。或者可以点击Manifest Editor,overview 页面上的“Exporting the unsigned .apk”连接 ,导出未签名apk文件。保存.apk文件后,用Jarsigner及自己的密钥给apk文件签名,如果没有密钥, 可以用Keystore创建密钥和密锁。如果已经有一个密钥了,如公共密钥,就可以给.apk文件签名了。

    也可以把上面这个完整的步骤写成一个bat文件,这样需要签名的时候只要运行这个bat就可以了。下面给出一个完整的bat文件示例:
    @Rem android签名程序 //注释指令
    @Rem echo是显示指令 格式:echo [{on|off}] [message]
    @echo **********************************************************
    @Rem 文件是否存在命令格式:if exist 路径+文件名 命令
    @if exist d:sign/MyFirstApp.keystore goto sign
    @echo 创建签名文件MyFirstApp.keystore
    @Rem keytool命令格式:-genkey产生签名 -alias别名 -keyalg加密算法 -validity有效天数 -keystore生产签名文件名称
    keytool -genkey -alias MyFirstApp.keystore -keyalg RSA -validity 40000 -keystore MyFirstApp.keystore
    @echo 开始签名:
    @Rem jarsigner命令格式:-verbose输出详细信息 -keystore密钥库位置 -signedjar要生成的文件 要签名的文件 密钥库文件
    jarsigner -verbose -keystore MyFirstApp.keystore -signedjar MyFirstApp_signed.apk MyFirstApp.apk MyFirstApp.keystore
    @goto over
    :sign
    @echo 开始签名:
    jarsigner -verbose -keystore MyFirstApp.keystore -signedjar MyFirstApp_signed.apk MyFirstApp.apk MyFirstApp.keystore
    :over
    @echo ********************MyFirstApp.apk 签名完成************************
    pause
    ================

    以上是一个给应用签名的完整bat文件,在运行这个bat文件时,还需要按照屏幕提示的步骤输入一些必要信息,最后生成一个签名后的文件是:MyFirstApp_signed.apk。

    签名完成以后最好再把这个文件压缩一下,使用Android SDK安装路径下tools文件夹里的zipalign进行压缩,以刚才这个文件为例,也可以写成一个bat文件,示例如下:
    D:\soft\android-sdk-windows\tools\zipalign -f -v 4 MyFirstApp_signed.apk MyFirstApp_zip.apk
    D:\soft\android-sdk-windows\tools\zipalign -c -v 4 MyFirstApp_zip.apk
    pause
    ================

    上面的D:\soft\android-sdk-windows用你的实际Android SDK安装路径代替。

    按照以上步骤签名、压缩就完成了,最后把压缩后的那个文件(比如例子中的MyFirstApp_zip.apk文件)复制到手机上就可以正常的安装运行了。

    文章转自:http://digdeeply.org/archives/0104395.html

    展开全文
  • Android 应用程序签名

    千次阅读 2012-09-04 13:39:44
    Android应用程序签名相关的理论知识包括:什么是签名、为什么要应用程序签名、如何应用程序签名等。1、什么是签名? 如果这个问题不是放在Android开发中来问,如果是放在一个普通的版块,我想大家都知道签名的...

    Android应用程序签名相关的理论知识包括:什么是签名、为什么要给应用程序签名、如何给应用程序签名等


    1、什么是签名?
          如果这个问题不是放在Android开发中来问,如果是放在一个普通的版块,我想大家都知道签名的含义。可往往就是将一些生活中常用的术语放在计算机这种专业领域,大家就开始迷惑了。计算机所做的事情,或者说编程语言所做的事情,不正是在尽可能地模拟现实吗?所以,计算机中所说的签名和生活中所说的签名在本质上是一样的,它所起到的作用也是一致的!

     

    2、为什么要给Android应用程序签名?
          如果只能用一句简单的话语来回答这个问题的话,我会说:“这是Android系统所要求的”。
          Android系统要求每一个Android应用程序必须要经过数字签名才能够安装到系统中,也就是说如果一个Android应用程序没有经过数字签名,是没有办法安装到系统中的!Android通过数字签名来标识应用程序的作者和在应用程序之间建立信任关系,不是用来决定最终用户可以安装哪些应用程序。这个数字签名由应用程序的作者完成,并不需要权威的数字证书签名机构认证,它只是用来让应用程序包自我认证的。


    3、为什么我开发的Android应用程序没有做什么签名也能在模拟器和手机上运行?
          你没有给Android应用程序签名并不代表Android应用程序没有被签名。为了方便我们开发调试程序,ADT会自动的使用debug密钥为应用程序签名。debug密钥?它在哪?debug密钥是一个名为debug.keystore的文件,它的位置:
               Ubuntu: ~/.android/debug.keystore (win7: c:/user/.Android/debug.keystore;  xp: C:/Documents and Settings/user/.Android/debug.keystore
    user”对应于你自己的windows操作系统用户名,这也就意味着,如果我们想拥有自己的签名,而不是让ADT帮我们签名的话,我们也要有一个属于自己的密钥文件(*.keystore)。


    4、Android应用程序签名步骤
    1)准备工作
          apk的签名工作可以通过两种方式来完成:
          1)通过ADT提供的图形化界面完成apk签名;

                右键项目——》 Android Tools ——》Export Signed Application Package... ——》 打开图形界面
          2)完全通过shell/dos命令来完成apk签名
                我比较喜欢第2)种方式,所以下面将讲解如何通过命令的方式完成apk签名。
                给apk签名一共要用到3个工具,或者说3个命令,分别是:keytool、 jarsigner、 zipalign,下面是对这3个工具的简单介绍:
                1)keytool:生成数字证书,即密钥,也就是上面说到的扩展名为.keystore的那类文件;
                2)jarsigner:使用数字证书给apk文件签名;
                3)zipalign:对签名后的apk进行优化,提高与Android系统交互的效率(Android SDK1.6版本开始包含此工具)

          从这3个工具的作用也可以看出,这3个工具的使用顺序。通常我们自己所开发的所有应用程序,都是使用同样的签名,即使用同一个数字证书,这就意味着:如果你是第一次做Android应用程序签名,上面的3个工具都将用到;但如果你已经有数字证书了,以后再给其它apk签名时,只需要用到jarsigner和zipalign就可以完成。
          为了方便使用上面3个命令,首先需要将上面3个工具所在路径添加到环境变量path中(我说的是为了方便使用,没有说必须要这么做)。怎么配置环境变量请参见我先前的博客(WindowsUbuntu),这里需要说一下这3个工具默认所在的路径:
                1)keytool:该工具位于jdk安装路径的bin目录下;
                2)jarsigner:该工具位于jdk安装路径的bin目录下;
                3)zipalign:该工具位于Android-sdk-windows/tools/目录下
          不知道大家是否注意到keytool和jarsigner两个工具是jdk自带的,也就意味着生成数字证书和文件签名不是Android的专利;另外从字面上理解jarsigner也能猜得出该工具主要是用来给jar文件签名的。


    2)生成未经签名的apk文件
          既然我们要自己对apk进行签名,就不再需要ADT默认帮我们签名了。如何得到一个未经签名的apk文件呢?打开Eclipse,在Android工程名称上点击右键,依次选择“Android Tools” - “Export Unsigned Application Package ...”,然后选择一个存储位置保存即可。这样就得到了一个未经签名的apk文件。


    3)使用keytool工具生成数字证书
          keytool -genkey -v -keystore it-homer.keystore -alias it-homer.keystore -keyalg RSA -validity 20000
    说明:
          1)keytool是工具名称,-genkey意味着执行的是生成数字证书操作,-v表示将生成证书的详细信息打印出来,显示在dos窗口中;
          2)-keystore  it-homer.keystore 表示生成的数字证书的文件名为“ it-homer.keystore”;
          3)-alias  it-homer.keystore 表示证书的别名为“ it-homer.keystore”,当然可以不和上面的文件名一样;
          4)-keyalg RSA 表示生成密钥文件所采用的算法为RSA;
          5)-validity 20000 表示该数字证书的有效期为20000天,意味着20000天之后该证书将失效
    在执行上面的命令生成数字证书文件时,会提示你输入一些信息,包括证书的密码,示例如下:


    4)使用jarsigner工具为Android应用程序签名
          jarsigner -verbose -keystore  it-homer.keystore -signedjar notepad_signed.apk notepad.apk  it-homer.keystore
    说明:
          1)jarsigner是工具名称,-verbose表示将签名过程中的详细信息打印出来,显示在dos窗口中;
          2)-keystore  it-homer.keystore 表示签名所使用的数字证书所在位置,这里没有写路径,表示在当前目录下;
          3)-signedjar notepad_signed.apk notepad.apk 表示给notepad.apk文件签名,签名后的文件名称为notepad_signed.apk;
          4)最后面的 it-homer.keystore 表示证书的别名,对应于生成数字证书时-alias参数后面的名称


    5)使用zipalign工具优化已签名的apk(非必须但建议这么做)
          zipalign -v 4 notepad_signed.apk notepad_signed_aligned.apk
    说明:
          1)zipalign是工具名称,-v表示在DOS窗口打印出详细的优化信息;
          2)notepad_signed.apk notepad_signed_aligned.apk 表示对已签名文件notepad_signed.apk进行优化,优化后的文件名为notepad_signed_aligned.apk

    说明:如果你以前的程序是采用默认签名的方式(即debug签名),一旦换了新的签名应用将不能覆盖安装,必须将原先的程序卸载掉,才能安装上。因为程序覆盖安装主要检查两点:
          1)两个程序的入口Activity是否相同。两个程序如果包名不一样,即使其它所有代码完全一样,也不会被视为同一个程序的不同版本;
          2)两个程序所采用的签名是否相同。如果两个程序所采用的签名不同,即使包名相同,也不会被视为同一个程序的不同版本,不能覆盖安装。

    另外,可能有人可能会认为反正debug签名的应用程序也能安装使用,那也没有必要自己签名了嘛。千万不要这样想,debug签名的应用程序有这样两个限制,或者说风险:
          1)debug签名的应用程序不能在Android Market上架销售,它会强制你使用自己的签名;
          2)debug.keystore在不同的机器上所生成的可能都不一样,就意味着如果你换了机器进行apk版本升级,那么将会出现上面那种程序不能覆盖安装的问题。不要小视这个问题,如果你开发的程序只有你自己使用,当然无所谓,卸载再安装就可以了。但要是你的软件有很多使用客户,这就是大问题了,就相当于软件不具备升级功能!



    参考推荐:

    Android 应用程序签名

    Signing Your Applications(google android)

    jarsigner - JAR Signing and Verification Tool (oracle jarsigner)

    keytool - Key and Certificate Management Tooloracle keytool


    IT-Homer 专栏

    展开全文
  • 生活中的签名:比如某位忠诚的粉丝获得了心仪偶像的签名,即偶像把自己的名字在粉丝希望的地方,比如在衣服上或者篮球上又或者在脸上。 Android中的签名:手机系统希望获得开发者的签名,即开发者把别名,...
  • Android应用程序签名详解

    万次阅读 2017-04-23 13:50:04
     本文主要讲解Android应用程序签名相关的理论知识,包括:什么是签名、为什么要应用程序签名、如何应用程序签名等。 1、什么是签名?  如果这个问题不是放在Android开发中来问,如果是放在一个普通的版块,...
  • 应用程序签名机制

    千次阅读 2013-10-27 10:15:06
    《Android安全机制解析与应用实践》第3章Android安全机制源代码分析,本章对Android安全模型提供的各种机制包括文件系统权限、进程通信、应用程序权限以及应用程序签名机制进行了从应用层、架构层到内核层的代码分析...
  • Android应用程序签名

    千次阅读 2011-08-09 16:36:29
    Android应用程序签名是android系统所要求的,Android系统要求每一个Android应用程序必须要经过数字签名才能安装到Android系统中。当然,未经签名的应用程序是没办法安装到系统中的。Android通过数字签名来标识应用...
  • android应用程序签名详解

    千次阅读 2014-11-01 10:44:39
    一般开发android的开发者都知道,在我们的Android系统中,不许可安装两个相同的包的应用    ... A应用已经在系统中存在了,这个时候...如果相同,B会把A覆盖安装掉; 如果不相同 B安装失败;  当你把应用发布到市场
  • Android应用程序签名 debug签名

    万次阅读 2012-04-04 14:50:24
    Android系统要求所有的程序经过数字签名才能安装,如果没有可用的数字签名,系统将不许安装运行此程序,不管是模拟器还是真实手机。因此,在设备或者是模拟器上运行调试程序之前,必须为应用程序设置数字签名。...
  • 本文主要讲解Android应用程序签名相关的理论知识,包括:什么是签名、为什么要应用程序签名、如何应用程序签名等。 1、什么是签名?  如果这个问题不是放在Android开发中来问,如果是放在一个普通的版块,我...
  • 为windows 驱动程序签名

    万次阅读 2014-09-16 15:47:52
    客户要求我们提供windows 8 64位的驱动程序,我们有windows 7 64位的
  • exe程序 制作数字签名

    千次阅读 2016-05-31 09:53:42
    1. 购买或自己创立一个的数字签名证书文件。 有工具软件可以制作数字签名证书,比如openssl,但自签的,在别人的机器上,回出现签名无法校验的问题。除非人家信任,否则人家不会安装你的证书。 2. 用工具软件对exe...
  • [014] Android应用程序签名详解

    万次阅读 热门讨论 2011-05-06 23:52:00
    本文主要讲解Android应用程序签名相关的理论知识,包括:什么是签名、为什么要应用程序签名、如何应用程序签名等。1、什么是签名? 如果这个问题不是放在Android开发中来问,如果是放在一个普通的版本,我想...
  • apk签名一共要用到3个工具,或者说3个命令,分别是:keytool、jarsigner和zipalign,下面是对这3个工具的简单介绍:  1)keytool:生成数字证书,即密钥,也就是上面说到的扩展名为.keystore的那类文件;  2)...
  • Android:应用程序签名总结

    千次阅读 2012-12-13 09:55:30
     由于开发商可能通过使用相同的Package Name来混淆替换已经安装的程序签名可以保证相当名字,但是签名不同的包不被替换。  APK如果使用一个key签名,发布时另一个key签名的文件将无法安装或覆盖老的版本,...
  • java数字签名程序

    2014-03-20 19:48:36
    自己用JAVA的数字签名程序,包括说明文档和截图。
  • 本文主要讲解Android应用程序签名相关的理论知识,包括:什么是签名、为什么要应用程序签名、如何应用程序签名等。 1、什么是签名?  如果这个问题不是放在Android开发中来问,如果是放在一个普通的版块,我想...
  • 本文主要讲解Android应用程序签名相关的理论知识,包括:什么是签名、为什么要应用程序签名、如何应用程序签名等。 1、什么是签名?  如果这个问题不是放在Android开发中来问,如果是放在一个普通的版块,...
  • 应用程序在安装时被分配用户 ID,应用程序在设备上的存续期间内,用户 ID 保持不变。权限是关于允许或限制应用程序(而不是用户)访问设备资源。 Android 使用沙箱的概念来实现应用程序之间的分离和权限,以允许或...
  • 应用程序签名主要用于对开发者身份进行识别,达到防范恶意攻击的目的,但不能有效地限制应用程序被恶意修改,只能够检测应用程序是否被修改过,如果应用程序被修改应该再采取相应的应对措施。    
  • 1、什么是签名?  如果这个问题不是放在Android开 发中来问,如果是放在一个普通的版块,我想大家都知道签名的含义。可往往就是将一些生活中常用的术语放在计算机这种专业领域,大家就开始迷惑了。...2、为什么要A
  • 今儿自己写个android 程序玩,运行时竟然报android Description Resource Path Location Type Error generating final archive: Debug Certificate expired on xxx Unknown Android Packaging Problem。...
  • 纠结了几天,终于解决了我所遇到的问题,现将处理方法出来以备自己日后查阅,也为遇到相同问题的朋友提供一点思路。   在我的程序中使用到了ksoap2.jar,关于这个Jar包的使用这里不再说明,网上有很多资料。...
  • Android 开发应用程序如何签名

    千次阅读 2012-09-05 18:46:08
    Android系统要求,所有的程序经过数字签名后才能安装。Android系统使用这个证书来识别... 理解Android应用程序签名有以下几个重要点:  ·所有的应用程序都必须签名。系统不会安装任何一个不签名的程序。  ·你
  • 手写签名插件—jSignature

    千次阅读 2019-04-16 20:13:54
    jSignature 是一个通过捕捉笔画的矢量轮廓输出多种格式数据的jQuery插件,通过该插件我们可以实现绘画板、手写签名等功能。 使用该插件需要引入jQuery和jSignature.js,首先初始化jSignature: var $signature = ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 99,688
精华内容 39,875
关键字:

给自己写的程序签名