android apk包解压缩,Android 解压APK文件

article/2025/11/8 23:57:05

最近一个项目里需要得到Android已安装程序的签名文件(CERT.RSA)的SHA1值,所以就调研解压APK文件。

通过包名来得到已安装程序在系统的安装包路径。

private static String getApkPath(String pkgName) {

PackageManager pm = mContext.getPackageManager();

ApplicationInfo pi = null;

try {

pi = pm.getApplicationInfo(pkgName,PackageManager.GET_UNINSTALLED_PACKAGES);

if(pi != null)

return pi.sourceDir;

else

return null;

} catch (NameNotFoundException e) {

e.printStackTrace();

return null;

}

}

解压对应的APK包,得到需要的文件(.RSA)

public static void UnZip(String unzipfile){

try {

File zipFile = new File(unzipfile); //解压缩的文件路径(为了获取路径)

if(!zipFile.exists())

{

Log.i(TAG,"FILE !EXIST");

return ;

}

ZipInputStream zin = new ZipInputStream(new FileInputStream(zipFile));

ZipEntry entry;

while ( (entry = zin.getNextEntry()) != null){

if (!entry.isDirectory()) { //匹配文件,跳过文件夹

String filePath = entry.getName();

Pattern p = Pattern.compile(".*(RSA|DSA|rsa)$"); //匹配RSA后缀的文件

Matcher m = p.matcher(filePath);

if(m.matches())

{

ByteArrayOutputStream baos = new ByteArrayOutputStream();

byte[] buffer = new byte[1024];

int count;

while ((count = zin.read(buffer)) != -1) {

baos.write(buffer, 0, count);

}

try {

String sha1 = Sha1.getSha1(baos);

Log.i(TAG, "Sha1:"+sha1+"");

} catch (Exception e) {

e.printStackTrace();

}

}

}

}//while

zin.closeEntry();

}//try

catch (IOException e) {

e.printStackTrace();

}

}

主要就是通过ZipInputStream来读取对应文件,然后将该文件写到SD卡上,然后调用sha1方法读取该文件得到sha1值。

ZipInputStream类,比较重要,值得学习一下。

SDK里:

51511220_1.png

总结:ZipInputStream是InputStream的子类,通过此类可以方便地读取ZIP格式的压缩文件。

通过ZipInputStream类中的getNextEntry()方法可以依次取得每一个ZipEntry,那么将此类与ZipFile结合就可以对压缩的文件夹进行解压缩操作。但是需要注意的是,在mldndir.zip文件中本身是包含压缩的文件夹的,所以在进行解压缩前,应该先根据ZIP文件中的文件夹的名称在硬盘上创建好一个对应的文件夹,然后才能把文件解压缩进去,而且在操作时对于每一个解压缩的文件都必须先创建(File类的createNewFile()方法可以创建新文件)后再将内容输出。


http://chatgpt.dhexx.cn/article/8Ihio3ca.shtml

相关文章

Android中APK打包流程

aapt: android application package tool,SDK (Android打包流程图) #Android打包流程 1.通过aapt工具将 资源文件(res)、清单文件(AndroidManifest.xml)生成对应的R.java文件 * 在项目的根目录下新建 gen目录,并且依次在gen目录下新建清单文件总包名对应的文件目录 …

android打包文件

直接把debug版本安装到真机会出现问题,和模拟器显示上的有点不一致。。亲身试验 接下来综合总结一下我看到其他博主们的经验 为什么要打包: apk文件就是一个包,打包就是要生成apk文件,有了apk别人才能安装使用。打包分debug版和re…

如何打开Android 打包文件 .apk 文件

在学习Android开发的过程中,常常想知道一些界面设计优良的应用是如何设计的。Android应用最后发布是以 .apk 文件提供的。那么如何在PC上打开这个 .apk文件呢? .apk 文件实际就是.zip 文件,可以使用WinZip ,WinRar 等来解压,一个简…

APK文件详解 + 打包流程

记录个人学习历程,毫无技术可言 前言 要学习Android必然需要了解apk的目录结构以及打包流程,还有各种文件详解 提示:以下是本篇文章正文内容,下面案例可供参考 一、APK文件详解 本质就是一个压缩包,可以直接进行解压…

Android 打包流程之aapt打包资源文件

上一篇:Android打包流程之资源管理 Android应用最终是以apk的形式放在手机上安装并运行的,而负责将资源文件和代码进行打包的工具就叫appt,全称Android Asset Packaging Tool,翻译过来就是Android资源打包工具,是Andro…

Android文件格式

在Android的priv-app目录下发现有oat类型的文件夹 什么是oat? It’s Of Ahead Time, a silly reordering of Ahead Of Time. We went with that because then we say that process of converting .dex files to .oat files would be called quakerizing and that wo…

Android项目打包生成apk文件

Android开发打包生成APK文件 打包apk文件分为两种 无需密钥的apk有密钥的apk(常规) 他们的区别只是就是安全问题。 1.没有密钥的apk 点击之后会自动生成没有密钥的APK。 在编辑器的右下角会出现该弹窗,点击location会帮你找到该文件 2.有密钥的APK 1.找到bui…

Java利用mpxj解析mpp格式文件

转载请注明来源:http://blog.csdn.net/loongshawn/article/details/51038051 《Java利用mpxj解析mpp格式文件》《SpringBoot添加Email发送功能》《SpringBoot配置log4j输出日志》《SpringBoot定时任务说明》《SpringBoot接口服务处理Whitelabel Error Page》《构建…

java解析mpp文件(包含层级关系)

我用的是递归循环的&#xff0c;不限制有多少子级关系都可以拿到 首先引入解析mpp所需依赖 <dependency><groupId>net.sf.mpxj</groupId><artifactId>mpxj</artifactId><version>7.1.0</version></dependency>解析所用实体类…

Date转换年月日

timebasic.js //时间戳转年月日 export function format(shijianchuo) {//shijianchuo是整数&#xff0c;否则要parseInt转换var time new Date(shijianchuo);var y time.getFullYear();var m time.getMonth() 1;m m < 10 ? "0" m : m;var d time.getDate…

C# 接口中DateTime类型字段返回年月日格式,去掉时分秒的数据

背景 在我们平时写接口的时候&#xff0c;避免不了这样一个问题&#xff0c;数据库中存的字段类型为datetime,代码中对应的实体类也是DateTime类型的字段&#xff0c;于是在读取数据库内容之后返回的数据也是DateTime类型的值&#xff0c;比如2022-10-24 18:34:56.110&#xf…

vue3-用dayjs将时间戳转为年月日格式

已知&#xff0c;格式化时间&#xff1a;dayjs(cellValue).format(YYYY-MM-DD) 用法&#xff1a; import dayjs from dayjs;dayjs(时间戳).format(YYYY-MM-DD HH:mm:ss); 如&#xff0c;在get请求中使用&#xff1a; service.get(/trace/sourceSearchInput.value).then(res …

Java但中获取时间将时间转换成字符串格式(年月日格式)

一:直接上马拿走&#xff1a; package cn.wyj.one;import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date;/*** 测试时间对象和字符串之间的相互转化* DateFormat抽象类和SimpleDateFormat实现类的使用* author 86155**/public class Demo2…

Excel修改日期格式:日月年-年月日

最近处理数据&#xff0c;遇到需要处理一下日期格式&#xff0c;记一下。。。 1、原格式 2、新建Excel表&#xff0c;复制到表中&#xff0c;选择列&#xff0c;数据-分列&#xff0c;下一步…,选择列格式为“DMY”,点击完成 3、效果(若不成功&#xff0c;可以试一试其他的)

各种加密证书

证书相关知识 PFX文件属于数字证书。pfx数字证书既包含有公钥又包含私钥&#xff0c;cer | crt数字证书只包含公钥。参考 JKS&#xff08;Java Key Store&#xff09;就是利用Java Keytool 工具生成的Keystore文件&#xff0c;JKS文件由公钥和密钥构成&#xff0c;其中的公钥…

公钥,私钥,数字签名,证书

今天&#xff0c;我读到一篇好文章。 它用图片通俗易懂地解释了&#xff0c;"数字签名"&#xff08;digital signature&#xff09;和"数字证书"&#xff08;digital certificate&#xff09;到底是什么。 我对这些问题的理解&#xff0c;一直是模模糊糊…

国密SSL证书保障网站安全

国内很多网站为了网站安全都会部署SSL证书&#xff0c;目前市面上申请到的SSL服务器证书基本都是采用RSA国际算法&#xff0c;市场上80%的SSL服务器证书都是由国外CA尤其是美国为主的CA签发的证书。 网络安全就是国家安全&#xff0c;网络安全的对手也已经不仅仅是黑客&#xf…

构建用于签名/加密双证书测试体系的可执行命令

注意事项 生成证书请求的填写 范例Subject: C CN, ST Beijing, L Beijing, O MSI, OU msi, CN ca, emailAddress cagmssl.com 前面的步骤存在错误&#xff0c;后面改用脚本进行证书生成&#xff0c;阅读时请跳过前面错误的内容 错误的内容 -> 开始 CA 生成私钥 o…

来此加密证书申请,验证,自动部署

之前用certbot, 后来一直不报错, 证书不管用, 就想着干脆直接使用来此加密, 不要中间商了, 就有了直接到来此加密注册之旅 注册地址: 来此加密https://letsencrypt.osfipin.com/user-0408/order/list附上这两年的"战绩" 申请这么多证书主要原因是, 测试域名太多, 一…

加密和数字证书

目录 一 KPI概述二 KPI应用1 内容安全加密2 加密文件3 使用非对称加密对称加密密钥4 非对称加密的缺点5 数字签名6 数字证书7 时钟服务8 私钥使用者认证9 总结附&#xff1a;U盾的工作原理介绍 三 详解公钥、私钥、数字证书的概念1 加密和认证2 公钥和私钥3 证书4 总结5 签名证…