apk签名(不打包)
apk提交给应用市场加固后,需要重新签名
签名工具:360签名
下载地址:http://yunpan.cn/cm8GqVWL7Y8Eh
签名步骤:http://jiagu.360.cn/qcms/help.html#!id=84
命令行签名步骤:
利用标准的java工具keytool.exe(位于jdk\jre\bin目录下)创建key,利用jarsigner.exe工具使用生成的key来生成证书和给程序签名(位于jdk\bin目录下)。
Win +R 运行cmd,进入目录D:\temp(注:使用该目录为示例工作目录)
1)、创建可以,运行如下命令
keytool -genkey -alias demo.keystore -keyalg RSA -validity 20000 -keystore demo.keystore
/*说明:keytool工具是Java JDK自带的证书工具
-genkey参数表示:要生成一个证书(版权、身份识别的安全证书)
-alias参数表示:证书有别名,-alias demo.keystore表示证书别名为:demo
-keyalg RSA表示加密类型,RSA表示需要加密,以防止别人盗取
-validity 20000表示有效时间20000天( K3
-keystore demo.keystore表示要生成的证书名称为demo
*/
2)、删除之前的签名文件
方法一:用解压缩工具解压缩apk文件(如:解压到D:\temp\Demo;找到下面的目录META-INF,删除目录META-INF。将整个Demo文件夹用zip工具,重新打包成zip压缩包,然后更改后缀为apk (注意:产生的Demo.zip中没有二级根目录)
方法二:用解压缩工具直接打开apk(注:不要解压),直接删除目录META-INF。
压缩包内容解析:
META-INF目录:存放签名后的CERT和MANIFEST文件,用于识别软件的签名及版权。
Rres目录:存放各种Android原始资源,包括:动画anim、图片drawable、布局layout、menu菜单、xml等等
AndroidManifest.xml编码后的Android项目描述文件,包括了Android项目的名称、版本、权限、程序组件描述等等
aclasses.dex编译后Class被dx程序转换成Dalvik虚拟机的可执行字节码文件
qresources.arsc所有文本资源的编译产物,里面包含了各Location对应的字符串资源。
3)、使用生成的key对apk签名,运行如下命令:
jarsigner -verbose -keystore demo.keystore -signedjar demo_signed.apk demo.apk demo.keystore
/*说明:jarsigner是Java的签名工具
-verbose参数表示:显示出签名详细信息
-keystore表示:使用当前目录中的demo.keystore签名证书文件。
-signedjar demor_signed.apk demo.apk demo.keystore 正式签名,三个参数中依次为签名后产生的文件demo_signed,要签名的文件demo.apk和密钥库demo.keystore.
*/
(注:查看某个apk是否经过了签名方法,jarsigner –verify demo.apk。优化:签名后需要做对齐优化处理zipalign -v 4 your_project_name-unaligned.apk your_project_name.apk )
apk签名(不打包)的更多相关文章
- ”只用 1 分钟“ - 超简极速 Apk 签名 & 多渠道打包神器
众所周知,渠道包作为当下国内 Android 应用市场常见的分发方式,当 APP 和后台交互或进行数据上报时,会带上各自的 channel 渠道信息,以此方便企业 & 开发者统计 APP 在各 ...
- Android apk逆向:反编译,回编译,签名,打包。
Android apk逆向:反编译,回编译,签名,打包流程. 第一步: apk 反编译. 1) 打开命令行窗口,输入java -version, 检测当前java版本,若版本较低, 则下载JAVA S ...
- Android 使用Android Studio + Gradle 或 命令行 进行apk签名打包
官方文档:https://developer.Android.com/tools/publishing/app-signing.html 1. 默认为debug mode,使用的签名文件在: $HOM ...
- Unity打包android的apk与数据包.obb分离和apk签名
那么,通过以上图片.我相信大多数人已经知道怎么创建了,apk签名比較简单,假设之前没有签名文件.那么选择图中的Create New Keystore然后在以下两个password框中输入passwor ...
- [置顶]
Android Studio apk打包以及获取apk签名信息
首先说下Android Studio 主要分为以下几步 填写你的签名的一些信息 (例如签名的文件名.省份.密码 别名 就是你比如叫xxx 但是别名是xx张三 认证年限就是apk过期默认是25年 其他就 ...
- 关于APK签名的一些东西
什么是APK 了解APK签名之前,首先要知道什么是apk文件:APK是AndroidPackage的缩写,即Android安装包(apk),APK文件其实就是zip格式的文件,只是后缀被改为了apk, ...
- 一次简单的绕过apk签名校验
朋友发来一个apk,需要分析其中的一些算法,分析过程涉及到了重新打包apk,打包后的apk运行失败,估计是apk内部有检验是否被篡改的代码.检验apk是否被篡改,简单的方法是直接校验签名,如果apk签 ...
- 柔弱的APP如何自我保护,浅谈APP防御手段,使用360加固助手加固/签名/多渠道打包/应用市场发布
柔弱的APP如何自我保护,浅谈APP防御手段,使用360加固助手加固/签名/多渠道打包/应用市场发布 由于JAVA和Android的平台型,所以APP很容易被反编译,这对于我们开发者来说,是一个不想要 ...
- ionic andorid apk 签名, 查看签名MD5
ionic cordova build android生成的是带签名的android-debug.apk, 这个是可以在手机上安装的, 但是换个电脑打包这个签名就不一样了, 这样就不能直接替换安装了, ...
随机推荐
- Android SDK打包
2015年6月18日 14:38:49 星期四 eclipse: 1. 将写好的代码上传版本库 2. 删除 /bin/* 3. eclipse->project->clean... 4. ...
- Java for LeetCode 216 Combination Sum III
Find all possible combinations of k numbers that add up to a number n, given that only numbers from ...
- [Android]drawable-nodpi文件夹 的作用
把一些不能被拉伸的图片放在 drawable-nodpi 中,此图片将不会被放大,以原大小显示. 看下图: 这两个图片被放到了drawable-nodpi 中 在不同分辨率下的显示大小是一样的,不会被 ...
- 在Linux下记录所有用户的登录和操作日志
一般我们可以用history命令来查看用户的操作记录,但是这个命令不能记录是哪个用户登录操作的,也不能记录详细的操作时间,且不完整:所以误操作而造成重要的数据丢失,就很难查到是谁操作的. 在这里我们通 ...
- Effective C++ -----条款14: 在资源管理类中小心copying行为
复制RAII对象必须一并复制它所管理的资源,所以资源的copying行为决定RAII对象的copying行为. 普遍而常见的RAII class copying行为是:抑制copying(使用私有继承 ...
- Effective C++ -----条款03:尽可能使用const
如果关键字const出现在星号左边,表示被指物是常量:如果出现在星号右边,表示指针自身是常量:如果出现在星号两边,表示被指物和指针两者都是常量. char greeting[] = " he ...
- SQL删除约束
)禁止所有表约束的SQL select 'alter table '+name+' nocheck constraint all' from sysobjects where type='U' )删除 ...
- MyEclipse8.5可用注册码(到2018年)
转载自:http://blog.csdn.net/z123252520/article/details/45873159 Subscriber:zy Subscriber Code:mLR8ZC-85 ...
- 【leetcode】Course Schedule(middle)☆
There are a total of n courses you have to take, labeled from 0 to n - 1. Some courses may have prer ...
- ios的链式编程笔记
1.Masonry的语法为啥能连续的使用点语法? >> 底层使用的是:用block当函数的返回参数 > 链式编程思想 2. 使用block当函数的返回参数 // 之前开发中比较习惯 ...