在cmd进入jdk的bin目录,把keystore文件和apk安装包放到bin目录下,然后执行以下命令,需要管理员权限:

jarsgner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore [keystorePath] -singnedjar [apkOut] [apkln] [alias]

例如

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore androids.keystore -signedjar mzbl36000.apk mzbl3600.apk 00000000000

jarsgner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore [keystorePath] -singnedjar [apkOut] [apkln] [alias]

ps:红色英文不填的话,默认签名算法采用“SHA256withRSA”,所以会导致360提示:”您的应用签名算法采用“SHA256withRSA”,在部分4.2一下安卓版本的手机上不能安装

详细

Android版本加固后签名 
在上传应用的时候,应用加固之后会破坏原有的签名,需要重新签名才能发布到应用市场中,如下图: 

加固后的签名步骤如下: 
1:签名之前需要Java的JDK环境以及被破坏签名的apk安装包,以及将需要用来签名的keystore文件。 
2:将未签名的apk和keystore文件拷贝到JDK安装目录下bin子目录下,通过bin目录下的jarsigner命令对未签名的apk安装包进行签名。 
通过cmd进入命令行模式: 
1、 Windows+R 
 
2、 输入如下命令进行签名: 
jarsigner -verbose –keystore 指定数字证书存储路径 
-signedjar 签名后的apk包未签名的 apk包_legu.apk 数字证书别名 
如: 
jarsigner -verbose -keystore mzjsz.keystore -signedjar zjsz_android_release-release.apk zjsz_android_release-release.apk zjsz 
以上命令的说明: 
-verbose:指定生成详细输出 
-keystore:指定数字证书存储路径 
-signedjar:该选项的三个参数为 
签名后的apk包 
未签名的apk包 
数字证书别名(后面有获取方式) 
注意数字证书别名有效期。 
注意:签名后的apk包和未签名的apk包的包名尽量不要相同,否则将会将之前的版本直接覆盖掉。 
输入正确指令之后会要求输入密钥库的密码即keystore的File Password,输入的过程中不会有任何的显示。输入完成按Enter键: 
 
接着输入密钥口令即keystore的Key Password,完成按Enter 
 
当出现下图即表示成功 
 
在bin目录下生成一个mzjsz_android.apk文件。 

获取keystore数字证书别名: 
在签名的过程中会需要获取keystore数字证书别名,具体的操作如下: 
通过命令定位在JDK的bin目录下,或者在bin文件夹中按住shift+右键,在弹出菜单项中选择在此处打开命令窗口。 
输入指令keytool -list -v -keystore keystore文件名 –storepass keystore文件密码 
例如:keytool -list -v -keystore keystoreName -storepass keystorePassword 
出现下图就表示获取成功 

APP上传应用商店加固后打包的更多相关文章

  1. app上传到App Store的快捷方法及步骤

    跳过证书的申请及配置概要文件的设置, 现在根据已有的配置概要文件及发布证书开始: 1.先在Xcode上的PROJECT和TARGETS->Build Setting->Code Signi ...

  2. Ios App上传步骤

    前言:作为一名IOS开发者,把开发出来的App上传到App Store是必须的.下面就来详细介绍下具体流程. 1.打开苹果开发者中心:https://developer.apple.com 打开后点击 ...

  3. IOS APP 上传到AppStore

    由于第一次接触要把 app 上传到 AppStore 比较棘手,很多地方不懂,研究了 大半天 终于给上传成功了,现在坐等审核吧,首先把上传到AppStore的流程 整理下 : 第一 :准备证书 (要确 ...

  4. APP上传

    原文网址: http://blog.csdn.net/ayangcool 前言:作为一名IOS开发者,把开发出来的App上传到App Store是必须的.下面就来详细介绍下具体流程. 1.打开苹果开发 ...

  5. iOS app上传错误集锦(转载)

    1.工程里增加了版本自动更新. 2.未增加判断网络状态的类Reachability. 3.问题:error itms -90049 This bundel is invalid. The bundle ...

  6. 安卓app上传到应用宝、360手机助手、小米应用商店、百度手机助手/安卓市场/91助手

    1.小米应用商店 小米开放平台网站:https://account.xiaomi.com 注册帐号教程地址:http://dev.xiaomi.com/doc/?p=90 应用提交流程:http:// ...

  7. APP上传APP Store遇到的各种问题

    内容含敏感话题或对苹果不友好的信息(如苹果婊) 使用了友盟的统计SDK,获取了IDFA但是上传填写无广告 采用友盟IDFA的sdk,并用友盟的默认淘宝页面广告,被告知和产品内容不符(最近) App在i ...

  8. app上传到app Store常见问题

    一.首先看一下提交界面出现的问题(能成功打包成.ipa) 产生问题的原因如下:由于工程中含有sub project,而sub project中有private或public的文件导致的.这样的应用往往 ...

  9. App上传到应用宝的一些问题

    问题:提示应用需要认领,怎么解决? 原因:如果app之前在其他市场上传过,再上传到应用宝,应用宝首先会从其他应用市场抓包,如果发现抓取的包和上传的app包名都是一致的,这时候提示你需要认领app. 操 ...

随机推荐

  1. linuxubuntu升级.net core版本到2.0

    直接看这里 https://www.microsoft.com/net/core#linuxubuntu

  2. Mac 全局变量 ~/.bash_profile 文件不存在的问题

    不存在就新建呗~ $ cd ~/ $ touch .bash_profile $ open -e .bash_profile 然后输入以下内容 # set color的部分是配置iterm2的字体颜色 ...

  3. Zynq GPIO 中断

    /* * Copyright (c) 2009-2012 Xilinx, Inc. All rights reserved. * * Xilinx, Inc. * XILINX IS PROVIDIN ...

  4. BZOJ 3000(Big Number-Stirling公式求n!近似值)

    3000: Big Number Time Limit: 2 Sec  Memory Limit: 128 MB Submit: 220  Solved: 62 [Submit][Status] De ...

  5. nginx vhosts rewrite 独立文件的方式出现

    [root@web01 /]# cat /app/server/nginx/conf/nginx.conf user www www; worker_processes ; error_log /ap ...

  6. 分页技术框架(Pager-taglib)学习三(pager-taglib中传递参数时中文乱码问题)

    一.问题描述 问题: 使用<pg:param name="key" />标签传递中文参数时,会有乱码. 原因: 因为它默认是用gb2312来对添加的参数进行编码,如果你 ...

  7. 李洪强和你一起学习前端之(3)Css基础和选择器

    大家好! 经过了前面的学习,是不是对前端的学习有了初步的了解.虽然我之前有iOS开发的经验,现在接触一门新的语言,对我来说 有一定的优势,但是一门技术对于谁来说都是公平的,我承认,我在接触新知识的时候 ...

  8. 广告过滤神器(ADMuncher)4.93

    Ad Muncher 介绍:        浏览网页时,冷不防地被网站播放的MIDI音乐声音吓一跳,或是因为弹出的广告窗口碍事,而影响你上网络的心情.Ad Muncher支持Netscape.Inte ...

  9. PHP学习笔记(9)文件上传

    index.php <!doctype html> <html lang="en"> <head> <meta charset=" ...

  10. mui调用webservice

    document.getElementById("confirm").addEventListener('tap', function() {var respnoseEl = do ...