一、生成密钥库
将位置定位在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. 深入浅出ES6(一):ES6是什么

    作者 Jason Orendorff github主页 https://github.com/jorendorff ECMAScript发生了什么变化? 编程语言JavaScript是ECMAScri ...

  2. linux入门教程(五) Linux系统的远程登录

    首先要说一下,该部分内容对于linux初学者来讲并不是特别重要的,可以先跳过该章节,先学下一章,等学完后再回来看这一章. Linux大多应用于服务器,而服务器不可能像PC一样放在办公室,它们是放在ID ...

  3. Ubuntu 取消sudo密码

    需求:在Ubuntu下装了FQ代理goagent之后,为了goagent能够开机启动.因为goagent需要sudo权限,所以要去掉sudo密码. 要修改的文件位于/etc/sudoers,先备份: ...

  4. [mock]7月25日

    1. 将一个数组分成左右两部分,使得右边的某个连续子段和减去左边的某个连续字段和最小[7,8,9,|3,5,-1] sum right - sum left minimal 想到左右分一刀,O(n), ...

  5. CentOS 7.0安装Nvidia驱动

    entOS 7.0 Nvidia显卡安装步骤: 1 在英伟达官网下载相应驱动 搜索出相应的驱动后,不要直接点,而是右健,Save Link as... 否则,会出现下载半天没动静的情况. 存放的路径上 ...

  6. 1、探究java方法参数传递——引用传递?值传递!

    原创博文,转载请注明出处.谢谢~~ java程序运行时,其对象是怎么进行放置和安排的呢?内存是怎么分配的呢?理解好这个很有好处!java有5个地方可以存储数据: 1.寄存器.这是最快的存储区,位于处理 ...

  7. OpenCV源码阅读(1)---matx.h---mat类与vec类

    matx.h matx类是opencv中的一个基础类,其位于core模块中,所执行的操作时opencv矩阵和向量的运算.如果熟悉基于matlab的图像处理,那么很容易想到,所有对图像的操作归根结底都是 ...

  8. UVa 1301 - Fishnet

    求出所有交点枚举每个四边形找最大面积即可. #include <cstdio> #include <cmath> #include <algorithm> usin ...

  9. python 批量更换图片格式脚本

    问题:将某文件下的所有jpg的图片更换为png的图片 简单的实现: # -*- coding:utf-8 -*- from os.path import splitext import glob fr ...

  10. 内存分配方法 kmalloc()、vmalloc()、__get_free_pages()

    Copyright: 该文章版权由潘云登所有.可在非商业目的下任意传播和复制. 对于商业目的下对本文的任何行为需经作者同意. kmalloc #include <linux/slab.h> ...