一、生成密钥库
将位置定位在jdk的bin文件中,输入以下命名行:keytool -genkey -alias ChangeBackgroundWid
get.keystore -keyalg RSA -validity 20000 -keystore ChangeBackgroundWidget.keystore(中间不换行),按下“Enter”键,并根据提示填写相关信息,详细信息如下及图1(validity为有效期,这里有效期为20000天):
输入keystore密码:
再次输入新密码:
您的名字与姓氏是什么?
  [Unknown]:  mythlink
您的组织单位名称是什么?
  [Unknown]:  www.mythlink.com
您的组织名称是什么?
  [Unknown]:  www.mythlink.com
您所在的城市或区域名称是什么?
  [Unknown]:  Shen Zhen
您所在的州或省份名称是什么?
  [Unknown]:  Guang Dong
该单位的两字母国家代码是什么
  [Unknown]:  CN
CN=mythlink, OU=www.mythlink.com, O=www.mythlink.com, L=Shen Zhen, ST=Guang Dong
, C=CN 正确吗?
  [否]:  Y
输入<ChangeBackgroundWidget.keystore>的主密码
        (如果和 keystore 密码相同,按回车):

                               图1
二、可以生成签名的apk文件,这里输入文件ChangeBackgroundWidget.apk,最终生成ChangeBackgroundWidget_signed.apk为Android签名后的APK执行文件
输入以下命令行:
jarsigner -verbose -keystore ChangeBackgroundWidget.keystore -signedjar ChangeBackgroundWidget_signed.apk ChangeBackgroundWidget.apk ChangeBackgroundWidget.keystore(中间不换行),按“Enter”键,根据提示输入密钥库的口令短语(即密码),详细信息如下及图2:
输入密钥库的口令短语:
   正在添加: META-INF/MANIFEST.MF
   正在添加: META-INF/CHANGEBA.SF
   正在添加: META-INF/CHANGEBA.RSA
  正在签名: res/drawable/icon.png
  正在签名: res/drawable/icon_audio.png
  正在签名: res/drawable/icon_exit.png
  正在签名: res/drawable/icon_folder.png
  正在签名: res/drawable/icon_home.png
  正在签名: res/drawable/icon_img.png
  正在签名: res/drawable/icon_left.png
  正在签名: res/drawable/icon_mantou.png
  正在签名: res/drawable/icon_other.png
  正在签名: res/drawable/icon_pause.png
  正在签名: res/drawable/icon_play.png
  正在签名: res/drawable/icon_return.png
  正在签名: res/drawable/icon_right.png
  正在签名: res/drawable/icon_set.png
  正在签名: res/drawable/icon_text.png
  正在签名: res/drawable/icon_xin.png
  正在签名: res/layout/fileitem.xml
  正在签名: res/layout/filelist.xml
  正在签名: res/layout/main.xml
  正在签名: res/layout/widget.xml
  正在签名: res/xml/widget_info.xml
  正在签名: AndroidManifest.xml
  正在签名: resources.arsc
  正在签名: classes.dex

                              图2
================================================================
在运行这种方式中,我碰到过几种不同的问题:
问题一:jarsigner: 无法打开 jar 文件: ChangeBackgroundWidget.apk
我的解决方法是:将要进行签名的APK放到对应的文件下,如我把要签名的ChangeBackgroundWidget.apk放到JDK的bin文件里。
问题二:jarsigner: 无法对 jar 进行签名: java.util.zip.ZipException: invalid entry comp
ressed size (expected 1598 but got 1622 bytes)
删除ChangeBackgroundWidget.apk中的META-INF目录即可
方法一:Android开发网提示这些问题主要是由于资源文件造成的,对于android开发来说应该检查res文件夹中的文件,逐个排查。这个问题可以通过升级系统的JDK和JRE版本来解决。
方法二:这是因为默认给apk做了debug 签名,所以无法做新的签名这时就必须点工程右键->Android Tools ->Export Unsigned Application Package.
或者从AndroidManifest.xml的 Exporting上也是一样的
然后再基于这个导出的unsigned apk做签名,导出的时候最好将其目录选在你之前产生keystore的那个目录下,这样操作起来就方便了。
PS:各位高手找到可行的解决方法,希望能告诉我下呵。
==========================================
MS我找到了第二个问题的解决方法了。。。
首先右击要签名APK对应的项目,选中“Android Tools”右扩展栏中的“Export Unsigned Application Package...”,,如图3

图3
在弹出的对话框中将这个未签名的apk储存在jdk的bin文件夹中,如图4:

                             图4
然后在运行上面的步骤即可。

Android之APK文件签名——keytool和jarsigner的更多相关文章

  1. 读取Android APK文件签名的方法

    在微信开放平台等申请API key 和secret时经常要用到apk文件签名,那么如何读取呢? 下面贴一下相关读取源码: 一共两个文件MainActivity和MD5, package com.lcg ...

  2. 如何给apk文件签名

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

  3. apk文件签名绕过

    声明: 1.本文转载自:http://www.2cto.com/Article/201311/256406.html,为了留作日后参考上传博客 2.如有转载请复试上面连接,尊重原创 apk文件签名绕过 ...

  4. [Android]使用platform密钥来给apk文件签名的命令

    1.使用platform密钥对apk进行签名 1.1.进入<Android_Source_Path>/build/target/product/security,找到[platform.p ...

  5. android 推断Apk是否签名和 签名是否一致

    推断Apk是否签名 用命令:jarsigner -verify -verbose -certs <apk文件> 假设有Android Debug字樣就是debug 假设已经签名: [证书的 ...

  6. Android测试之 APK重签名方法

    方法一:命令行重签名 D:\>keytool -helpkeytool 用法: -certreq [-v] [-protected] [-alias <别名>] [-sigalg & ...

  7. (转载)重新对APK文件签名

    1.将证书(debug.keystore)复制到与需要重新签名的apk文件相同的目录下(如:复制到D:\Sign) 2.在cmd中切换到需要重新签名的apk文件的目录下 3.使用WinRAR打开要重新 ...

  8. React Native之APK文件签名及打包

    生成apk签名文件 我们使用android studio的方式进行签名 AS工具栏找到并点击 build->gennrate signed apk 两种情况: 1.这里如果已经有签名文件了则直接 ...

  9. Android逆向 APK文件组成

    一 了解APK文件 我们知道Android系统能运行的程序是.apk文件格式,其实它就是一个压缩包而已,把.apk修改成.zip,然后解压就可以得到该apk内部的文件结构. PS: 既然可以把apk文 ...

随机推荐

  1. EXPRESS.JS再出发

    那个那个MEAN的书,看得七七八八,有了大概,现在就要一样一样的加深记忆啦.. EXPRSS.JS的东东,网上有现成入门书籍: 第一期代码测试: var express = require('expr ...

  2. Ubuntu环境下Nutch+Tomcat 搭建简单的搜索引擎

    简易的搜索引擎搭建 我的配置: Nutch:1.2 Tomcat:7.0.57 1 Nutch设置 修改Nutch配置 1.1 修改conf/nutch-site.xml <?xml versi ...

  3. [Hibernate]dynamic-insert和dynamic-update属性

    这二个属性默认情况均为false,你可以通过以下二种方式进行配置使用: 1.Annotation @Entity @Table(name = "stock_transaction" ...

  4. JDK与JRE

    dos命令行中常见的命令: 1.dir:列出当前目录下的文件以及文件夹 2.md:创建目录(即文件夹) |-----C:\>md kkk(在C盘下创建了一个名为kkk的文件夹) 3.rd:删除目 ...

  5. PKUSC 模拟赛 day1 上午总结

    思考了一下第二题,觉得有无数种乱搞做法 类似什么bitset压位,MCS染色之类奇怪的做法 然而都是玄学正确性或者玄学复杂度 先放题解把 第一题显然具有单调性,二分就可以啦 O(nlogn),貌似输出 ...

  6. URL中的特殊字符处理笔记

      URL中的特殊字符 有些符号在URL中是不能直接传递的,如果要在URL中传递这些特殊符号,那么就要使用他们的编码了.编码的格式为:%加字符的ASCII码,即一个百分号%,后面跟对应字符的ASCII ...

  7. 本人arcgis api for javascript中常见错误总结

    1. 2.对象不支持"replace"属性或方法 解决办法:一般在ie中执行js会报这样的错误,基本问题就是你引用了某个对象中不存在的方法,可能是这个方法本来存在而你写错了,或者调 ...

  8. Mmap的实现原理和应用

    http://blog.csdn.net/edwardlulinux/article/details/8604400 很多文章分析了mmap的实现原理.从代码的逻辑来分析,总是觉没有把mmap后读写映 ...

  9. class_create()

    #define class_create(owner, name)               \({                                              \   ...

  10. sqlsevrer中output的用法

    近日,看到代码中有output写法,不知其意,经过一番查找,终于找到了原因,它的作用是将修改影响的结果给输出出来. 比如update语句, 除了修改数据以外, 对于发生更新的列, update语句还可 ...