关于android的程序签名

【华为OD统一考试B卷 | 100分】全排列(C++ Java JavaScript Python) 给定一个只包含大写英文字母的字符串S,要求你给出对S重新排列的所有不相同的排列数。如:S为ABA,则不同的排列有ABA、AAB、BAA三种。输入一个长度不超过10的字符串S,我们确保都是大写的。 阅读详情

我以前在做android杂志时候遇到一个需求,要求是开发人员开发完第一版本杂志后,后面的版本只需要通过工具改变文字内容和图片重新签名就可以出第二个版本,不用重新改源码进行编译打包。我把所有可能改变的资源都放在assets 目录下,在程序中通过名字来获取资源,这样就不用重新编译了,但是签名呢?怎样通过工具来程序签名呢?

一: 生成未签名的apk包.

  把res, resources.arsc, classes.dex, AndroidMainfest.xml, assets等资源打包成apk。   apk 是采用的zip压缩方式,但是资源中图片和音乐是不压缩的,也就是图片和音乐要保持原大小。

 

代码

 

 

二.  对apk包进行签名.
看了博文;,下面是我的解决方法,希望有朋友用的着。
首先需要android自带的私钥 和公钥testkey.zip
还有SignApk.java.

在signApk.java中的main(String []args)方法中 参数args这里我们无法传入,我们只有到程序中自己赋值。

 

代码
复制代码
   
public static void main(String[] args) {
2 args = new String[]{ " d:/testkey.x509.pem " , " d:/testkey.pk8 " , " d:/lyl.apk " , " d:/lyl1.apk " }; // 第一个参数是公钥,第二个参数是私钥, 第三个参数是需要签名的apk, 第四个参数是签名后生成的apk
3
4 JarFile inputJar = null ;
5 JarOutputStream outputJar = null ;
6
7 try {
8 X509Certificate publicKey = readPublicKey( new File(args[ 0 ]));
9 PrivateKey privateKey = readPrivateKey( new File(args[ 1 ]));
10 inputJar = new JarFile( new File(args[ 2 ]), false ); // Don't verify.
11 outputJar = new JarOutputStream( new FileOutputStream(args[ 3 ]));
12 outputJar.setLevel( 9 );
13
14 // MANIFEST.MF
15 Manifest manifest = addDigestsToManifest(inputJar);
16 manifest.getEntries().remove( " META-INF/CERT.SF " );
17 manifest.getEntries().remove( " META-INF/CERT.RSA " );
18 outputJar.putNextEntry( new JarEntry(JarFile.MANIFEST_NAME));
19 manifest.write(outputJar);
20
21 // CERT.SF
22 Signature signature = Signature.getInstance( " SHA1withRSA " );
23 signature.initSign(privateKey);
24 outputJar.putNextEntry( new JarEntry( " META-INF/CERT.SF " ));
25 writeSignatureFile(manifest,
26 new SignatureOutputStream(outputJar, signature));
27
28 // CERT.RSA
29 outputJar.putNextEntry( new JarEntry( " META-INF/CERT.RSA " ));
30 writeSignatureBlock(signature, publicKey, outputJar);
31
32 // Everything else
33 copyFiles(manifest, inputJar, outputJar);
34 } catch (Exception e) {
35 e.printStackTrace();
36 System.exit( 1 );
37 } finally {
38 try {
39 if (inputJar != null ) inputJar.close();
40 if (outputJar != null ) outputJar.close();
41 } catch (IOException e) {
42 e.printStackTrace();
43 System.exit( 1 );
44 }
45 }
46 }
复制代码

执行完signApk后签名完成,可以安装应用程序了,呵呵。

原文: http://www.cnblogs.com/jeromeliu/archive/2010/11/23/1885244.html


雷赛控制卡的扩展IO连接 因设备的上IO点较多,所以使用了多个雷赛32点位的IO扩展卡。上位机程序在控制输出IO时发现主模块IO和第一个扩展IO的输出可以控制。但第二个IO扩展卡和第三个IO扩展卡的输出控制不了。经排查出发现轴卡在初始化时只连接了第一个扩展IO卡。增加下面的代码连接上扩展IO就可以了。雷赛控制卡的扩展IO点无法控制问题处理。 阅读详情

相关推荐

瑞芯微rv1126 rtsp+mpp+rga取流

瑞芯微rv1109 rtsp+mpp+rga取流

ZuoSeDiao的博客 6339

怎样制作数字签名

怎样制作数字签名1、 获得软件发行证书(测试)一、找到或下载signcode.exe、makecert.exe和cert2spc.exe这三个程序,如果装了VS.NET的话,可以在其目录下找到,或者去微软网上下载也可以的。二、:创建用于数字签名的公钥和私钥对,并将其存储在证书文件中。输入makecert -sk lyl -n "CN=johnlya" c:/lyl.cer。就会在你

实时数据库的专栏 7419

直流电机双闭环调速系统MATLAB仿真

Chopper-Fed DC Motor Drive This example shows a Chopper-Fed DC Motor Drive. Description The DC motor is fed by the DC source through a chopper which consists of GTO thyristor and free-wheeling diode ...

飞行动力的博客 2万+

IntelliJ IDEA / Eclipse 自动生成 Author 注释 签名

Author 注释 签名如下: /** * @author 稚枭天卓 E-mail:zhxiaotianzhuo@163.com * @version 创建时间:2016-6-20 下午04:58:52 */ Eclipse 自动生成 Author 注释 签名 window-> preference-> Java-> code styple-> code temp

稚枭天卓 5万+

FISCO BCOS 三、多群组部署以及新节点加入群组

本章主要以星形组网和并行多组组网拓扑为例,指导您了解如下内容:了解如何使用创建多群组区块链安装包;了解创建的多群组区块链安装包目录组织形式;学习如何启动该区块链节点,并通过日志查看各群组共识状态;学习如何向各群组发送交易,并通过日志查看群组出块状态;了解群组内节点管理,包括节点入网、退网等;了解如何新建群组。

qq_63235624的博客 2920

STM32智能小车控制舵机转向

文章目录前言一、舵机简单介绍及接线方式二、cubeMX配置三、代码解析总结 前言 本文将带大家学习如何驱动舵机转向 一、舵机简单介绍及接线方式 信号线(黄线)红线(电源线)棕色(地线) 舵机的控制一般需要一个20ms左右的时基脉冲,该脉冲的高电平部分一般为0.5ms-2.5ms范围内的角度控制脉冲部分,总间隔为2ms。以180度角度伺服为例,那么对应的控制关系是这样的: 0.5ms--------------0度; 1.0ms------------45度; 1.5ms------------90度; 2

m0_49476241的博客 8613

leetcode3. 无重复字符的最长子串

【代码】leetcode3. 无重复字符的最长子串。

grandZXW的博客 367

【PostgreSQL】PostgreSQL数据库函数比对模板(PG通用)

LOOKUP 函数从单行或单列区域 (区域:工作表上的两个或多个单元格。区域中的单元格可以相邻或不相邻。)或数组 (数组:用于建立可生成多个结果或可对在行和列中排列的一组参数进行运算的单个公式。数组区域共用一个公式;数组常量是用作参数的一组常量。LOOKUP 函数具有两种语法形式:向量形式和数组形式。vlookup查找匹配值超过255个字符显示#Value的解决办法。如果值为错误值 #N/A,则返回 TRUE。

tttzzzqqq2018的博客 1494

力扣--无重复字符的最长子串3(滑动窗口)

因为无重复字符的最长子串是 "abc",所以其长度为 3。,请你找出其中不含有重复字符的。

无聊人的博客 385

Silly Tavern酒馆ai角色卡与世界书导入超详细教程!

前几天,我在设置 Silly Tavern 的时候,想导入一个喜欢的角色卡,结果发现不少朋友其实已经下载好了角色资源,但却不知道怎么正确导入使用。这篇文章就作为一份完整的新手向教程,一步步教你如何在 Silly Tavern 中导入角色卡、世界书,并实现与 AI 角色的真实互动。如果你是第一次接触这个功能,建议先收藏慢慢看~点击菜单栏上的 图标,打开角色界面。初始状态下,你应该只看到默认角色 Seraphina。你可以先点击她的头像尝试聊天,也可以导入自己喜欢的角色。点击导入按钮,选择你下载好的角色卡(通

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 2万+

安路TangDynasty和FD和JTAG驱动器安装

安路FPGA产品矩阵包含SALPHOENIX高性能、SALEAGLE高性价比和SALELF低功耗三大系列,广泛应用于网络通信、消费电子等领域。配套的TangDynasty(TD)集成开发环境支持标准设计输入,提供完整优化流程与调试工具。简要介绍了TD 6.2.1版本的安装步骤。

wangjie36的博客 1037

华为OD机试“HJ10 字符个数统计”Java编程解答

编写一个函数,计算字符串中含有的不同字符的个数。字符在 ASCII 码范围内( 0~127 ,包括 0 和 127 ),换行表示结束符,不算在字符里。不在范围内的不作统计。多个相同的字符只计算一次例如,对于字符串 abaca 而言,有 a、b、c 三种不同的字符,因此输出 3 。数据范围: 1≤n≤500

wwwwwmmn的博客 467

MNI152 坐标空间和 fsaverage 坐标空间相互转换, 如已知fsaverage空间的坐标如何求MNI152 坐标?aparc.a2009s.annot转化到MNI152空间?

大多数神经影像学研究的结果是在体积(例如,MNI152)或表面(例如,fsaverage)坐标系中报告的。体积坐标系和表面坐标系之间的准确映射可以促进许多应用,例如将 fMRI 组分析从 MNI152 投影到 fsaverage 以进行可视化或从 fsaverage 投影静息状态 fMRI 分区对 MNI152进行新数据的体积分析。Wu et al., 2018 评估了三种在 MNI152通过模拟上述应用的 Colin27 和 fsaverage 坐标系:将组平均数据从 MNI152/Colin27 投影到

从事脑科学核磁共振方法学研究,在Nature communications等权威期刊发表研究论文,熟练掌握磁共振处理方法和统计学方法,欢迎大家和我交流。 2966

牛客NC170 最长不含重复字符的子字符串【高频 中等 map、滑动窗口 Java,Go,PHP】

【代码】牛客NC170 最长不含重复字符的子字符串【高频 中等 map、滑动窗口 Java,Go,PHP】

weixin_37991016的博客 317

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

给你一个字符串 S,找出所有长度为 K 且包含重复字符的子串,请你返回全部满足要求的子串的数目

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

waniu999的博客 458

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

【算法】面试题 08.07. 无重复字符串的排列组合(多语言实现)

无重复字符串的排列组合。编写一种方法,计算某字符串的所有排列组合,字符串每个字符均不相同。

二当家的白帽子 1177

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

字符个数统计 java

字符个数统计 java 题目描述 编写一个函数,计算字符串中含有的不同字符的个数。字符在ACSII码范围内(0~127)。不在范围内的不作统计。 输入描述: 输入N个字符,字符在ACSII码范围内。 输出描述: 输出范围在(0~127)字符的个数。 示例1 输入 abc 输出 3 代码: import java.util.*; public class Main { public sta...

柳絮 2379

面试题:“中国浙江杭州”这样的一串字符串有多少个不重复的排序组合?

【代码】面试题:“中国浙江杭州”这样的一串字符串有多少个不重复的排序组合?

tiantian1980的专栏 323

LeetCode-3. Longest Substring Without Repeating Characters [C++][Java]

Given a strings, find the length of thelongest substringwithout repeating characters.

贫道绝缘子的博客 230

Leetcode:maxPower连续字符

给你一个字符串s,字符串的「能量」定义为:只包含一种字符的最长非空子字符串的长度。 请你返回字符串的能量。 示例 4: 输入:s = "hooraaaaaaaaaaay" 输出:11 思路: 循环字符串中的字符 前一个字符和后一个字符相同 则计数的num++ 并且用max保存最大的num 不相同 则把num置1 最后输出max 算法代码: class Solution { public: int maxPower(string s) { int n...

qq_44189622的博客 134

【问题描述】删除字符串中的重复字符. 【输入形式】输入一个字符串,全为字母字符 【输出形式】输出删除重复字符后的字符串 【样例输入】abbcbd 【样例输出】abcd 【样例说明】删除第二个

【问题描述】删除字符串中的重复字符. 【输入形式】输入一个字符串,全为字母字符 【输出形式】输出删除重复字符后的字符串 【样例输入】abbcbd 【样例输出】abcd 【样例说明】删除第二个和第三个“b”,保留第一个遇到的不同字符 import java.util.LinkedHashSet; public class Test3_7_ztk { public static void m...

braylon_zhang的博客 1851

计算字符串的长度

package com.string; import java.util.ArrayList; import java.util.List; import java.util.Scanner; //计算字符串的长度 public class TestStringLength { public static void main(String args[]) { System.o

zjcheer_up的专栏 659

2.无重复字符的最长子串(字节跳动)

给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 示例1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其 长度为 3。 示例 2: 输入: "bbbbb" 输出: 1 解释: 因为无重复字符的最长子串是 "b" ,所以其长度为 1。 示例 3: 输入: "pwwkew" 输出: 3 解释: 因...

科技向善 960

找出没有重复字符的的所有子串,最长子串

public class Solution {     public static void main(String[] args) {                String a="asdfsdsasd";         String max ="";         String realmax="";         List<String> list = new Arra...

wugengen的博客 277

给定的字符串,找出其中最长的连续没有重复的字符串

例如:输入:“aabcceddabc” 输出:“dabc” 4String s = "aabcceddabc"; Set set = new HashSet(); int i = 0; int j = 0; String str = ""; while (i < s.length() &&am...

kisorl的博客 1122

字符串去重的方法

不保证原有顺序: public static void main(String[] args) { String str = "abbddcaaaddfertsdf232122dsdfdsftwesdfdzxcssdfffggaasb"; str = removedb ( str , 0 ) ; System.out.println ( "去重后:&am

秀发浓密是我的错 1万+
上一篇: Android手机总内存和可用内存
下一篇: Android之TextView属性详解
jacklce
博客等级 码龄15年 18粉丝 26原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值