关于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


Blender骨骼绑定实战:如何用IK控制器让角色动作更自然(附常见问题解决) 本文深入探讨了Blender中IK控制器的实战应用,旨在解决角色动作僵硬问题。通过对比IK与FK的核心差异,详细解析了IK链的构建、参数设置及极向目标的使用,并提供了控制器定制、IK/FK无缝切换等高级技巧,帮助动画师实现更自然、符合直觉的角色动画。 阅读详情

相关推荐

5分钟搞定!Unity中Matcap玻璃材质快速实现(含免费贴图资源)

本文详细介绍了在Unity中快速实现Matcap玻璃材质的方法,从技术原理到实战操作,包括Shader编写、参数调节和性能优化。通过Matcap技术,开发者可以高效创建逼真玻璃效果,特别适合移动端和快速迭代项目。文章还提供了免费贴图资源和进阶优化技巧,帮助提升视觉效果和运行效率。

a1b2c的博客 219

怎样制作数字签名

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

实时数据库的专栏 7419

【计算机视觉】基于复杂环境下的车牌识别

本文针对复杂环境下(光照变化、车牌变形、噪声干扰)的车牌识别问题,提出了一套完整的优化方案。通过四个核心环节进行改进:1)采用CLAHE、同态滤波等技术优化光照处理;2)使用边缘检测和透视变换应对车牌变形;3)结合中值滤波和暗通道去噪算法消除干扰;4)改进字符分割与识别方法。文章提供了详细的Python实现代码,展示了从预处理到字符识别的完整流程,并通过多策略融合显著提升了复杂场景下的识别准确率。实验结果表明,该方法能有效应对各类复杂环境挑战,为实际应用提供了可靠解决方案。

2401_84149564的博客 1627

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万+

Python量化入门:用pytdx获取800个交易日K线数据的完整指南(附代码)

本文为Python量化交易初学者提供了使用pytdx库免费获取股票日线级别K线数据的完整指南。文章详细介绍了从环境搭建、单只股票数据获取,到构建健壮的批量下载器、数据清洗与验证,再到基础分析与可视化的全流程,并附有可直接运行的代码示例,帮助读者快速建立本地股票数据库。

weixin_29050513的博客 1465

CubeMX实战:ETH+LWIP+FreeRTOS网络工程从零搭建与AC6编译优化

本文手把手教你使用STM32CubeMX从零搭建集成以太网(ETH)、LWIP协议栈和FreeRTOS的嵌入式网络工程。文章详细解析了外设配置、协议栈调优、任务规划等关键步骤,并重点分享了如何解决ARM Compiler 6(AC6)的兼容性问题,实现编译速度与稳定性的双重提升,助你快速构建稳定的网络应用原型。

n2o3p4的博客 409

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

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

grandZXW的博客 367

YOLOv12改进策略【卷积层】| CVPR-2020 利用DynamicConv 动态卷积 结合A2C2f进行二次创新,提高精度

在大规模视觉预训练中,通常模型的性能受到数据、参数和FLOP三个关键因素的影响。一般来说,模型的参数数量越多,FLOP也越高,但在移动设备等对计算资源有限制的场景下,需要低FLOP的模型同时又希望模型能从大规模预训练中受益。传统的方法很难在增加参数的同时保持低FLOP,因此需要一种新的设计来解决这个问题,模块应运而生。

Limiiiing的博客 827

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

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

无聊人的博客 385

30天入门 SAP BTP 开发系列之十八:保姆级教程 - 如何部署 SAP UI5 到 SAP BTP Cloud Foundry 环境

本文摘要: 本文详细介绍了如何将SAP UI5应用部署到Cloud Foundry环境。首先需完成前17篇教程学习,创建SAP BTP子账户并启用Cloud Foundry环境。在SAP Business Application Studio中创建Fiori开发空间,导入GitHub上的UI5项目代码。通过npm run build命令打包成mtar文件后,使用cf deploy命令部署到Cloud Foundry。部署成功后,可在BTP控制台查看应用或通过命令行获取访问URL。整个过程涵盖了环境准备、代码

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1020

微信小程序 - 解决video视频播放黑屏只有声音没有画面问题,使用Video标签无法播放视频失败只有声音、黑屏视频播放不了,安卓手机/苹果ios视频只有声音却没有画面(uniapp微信小程序也适用)

微信小程序video有声音但是画面黑屏,uni-app微信小程序视频播放黑屏但是有音频,微信小程序video android真机或苹果ios系统中黑屏 只有声音没有画面,Uniapp微信小程序 Video MP4视频播放失败,只有声音,黑屏,视频播放不了,解决办法,解决小程序视频编码兼容性问题导致黑屏,出现黑屏但有声音的问题,video标签播放视频有声音,但是黑屏的原因及解决办法,mp4视频编码的问题,video标签播放视频有声音,但是黑屏。uniapp使用video标签无法播放视频出现黑屏问题处理,如何解

🏆 前端领域优质创作者 7777

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

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

wwwwwmmn的博客 467

【四足机器人项目实战】四足机器人弹簧倒立摆(SLIP)动力学模型

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录系列文章目录前言1.动力学建模构型方法2.四足机器人动力学模型(1)多体动力学模型【针对躯干+脚建模】方法一:VMC(VirtualModelController)模型方法二:SLIP模型(2)浮基单体动力学模型【针对躯干建模】【用于MPC】 前言 认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长! 本文先对四足机器人动力学模型-VMC、SLIP和浮动机体模型做个简

qq_35635374的博客 7312

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

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

weixin_37991016的博客 317

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

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

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

waniu999的博客 458

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

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

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

二当家的白帽子 1177

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

字符个数统计 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、付费专栏及课程。

余额充值