android apk包解压缩,Android 解压APK文件
最近一个项目里需要得到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里:
总结:ZipInputStream是InputStream的子类,通过此类可以方便地读取ZIP格式的压缩文件。
通过ZipInputStream类中的getNextEntry()方法可以依次取得每一个ZipEntry,那么将此类与ZipFile结合就可以对压缩的文件夹进行解压缩操作。但是需要注意的是,在mldndir.zip文件中本身是包含压缩的文件夹的,所以在进行解压缩前,应该先根据ZIP文件中的文件夹的名称在硬盘上创建好一个对应的文件夹,然后才能把文件解压缩进去,而且在操作时对于每一个解压缩的文件都必须先创建(File类的createNewFile()方法可以创建新文件)后再将内容输出。
android apk包解压缩,Android 解压APK文件相关推荐
- 【Android 安全】DEX 加密 ( Java 工具开发 | 解压 apk 文件 | 加密生成 dex 文件 | 打包未签名 apk 文件 | 文件解压缩相关代码 )
文章目录 一.解压 apk 文件 二.加密生成 dex 文件 三.打包未签名 apk 文件 四.完整代码示例 五.文件解压缩相关代码 六.执行结果 参考博客 : [Android 安全]DEX 加密 ...
- Android解压apk包
1.使用apktool解压apk包 下载地址:https://ibotpeaches.github.io/Apktool/# 命令:apktool d app-release.apk
- 【Android 安全】DEX 加密 ( 代理 Application 开发 | 解压 apk 文件 | 判定是否是第一次启动 | 递归删除文件操作 | 解压 Zip 文件操作 )
文章目录 一.判定是否是第一次启动 二.递归删除文件操作 三.解压 Zip 文件操作 四.解压操作相关代码 参考博客 : [Android 安全]DEX 加密 ( 常用 Android 反编译工具 | ...
- python解压7z_python使用7z解压apk包的方法
本文实例讲述了python使用7z解压apk包的方法.分享给大家供大家参考.具体如下: 这段代码通过shell调用7z对apk包进行解压缩 def run_shell(command, mayFree ...
- Android 解压zip文件
过了n多天后,当再次使用原先博客上写的那篇: Android 压缩解压zip文件 去做zip包的解压的时候,出现了原来没有发现的很多问题.首先是中文汉字问题,使用java的zip包不能很好的解决解压问 ...
- Android 解压zip文件你知道多少?
对于Android常用的压缩格式ZIP,你了解多少? Android的有两种解压ZIP的方法,你知道吗? ZipFile和ZipInputStream的解压效率,你对比过吗? 带着以上问题,现在就开始 ...
- Android开发之Zip下载解压
本篇博客为需求而发烧,若有雷同需求code拿走不谢. 需求如下:点击Item,从服务器下载zip包到本地文件夹并解压,解压后的图片文件全部查询出来,用于界面预览 没有强制每次都下载zip包保持最新,如 ...
- android zip格式应用,Android 压缩解压zip文件
Android 压缩解压zip文件 上次写了个解压缩功能,但有局限性,比如压缩文件xx.zip 里包括子目录的情况下,执行上次解压缩的功能就不能实现我们想要的效果,于是在网上参考了一下java的解压缩 ...
- android zip解压进度_android zip4j之--解压zip文件并实时显示解压进度
Zip文件是我们经常用到压缩文件格式,android中在进行网络请求大批量数据时,通常会采用传递zip文件,这样做即可以减少网络流量的消耗,加快请求的响应速度,又可以减少对存储空间的要求,所以当我们将 ...
最新文章
- Spring注解创建Bean的几种方式
- (Mark)操作系统原理
- zabbix企业应用之bind dns监控(转)
- 分布式事务科普(终结篇)
- 从源码出发深入理解 Android Service
- Kotlin 学习笔记(七)—— Kotlin类与对象之属性与字段
- Linux中vim编辑器常用命令、文件查找、磁盘挂载、用户管理
- 年全国高校计算机能力挑战赛,初赛公示_2020年全国高校计算机能力挑战赛
- [毕业生的商业软件开发之路]现代商业软件开发概况
- 语音合成——闽南语合成(1)
- 面向对象下 abstract关键字(宋红康JAVASE)
- 张志华-统计机器学习-概率论导论
- ubuntu下命令行禁用笔记本触摸板
- obs弹幕助手android版,obs弹幕助手
- Day001:Excel数据分析
- 软件测试物理机环境基础
- 炫酷动态静图40例——多图杀猫
- VNC协议-认证过程
- Canvas画图之烟花爆炸demo
- 东华理工大学计算机科学与技术怎么样,东华理工大学计算机科学与技术专业介绍...
热门文章
- android9壁纸存放路径,Android基础入门教程——10.9 WallpaperManager(壁纸管理器)
- 使用gopsolver和SDPA求解库实现C++正定规划
- 波数及波数向量(波矢量)
- 斗地主游戏Landlord
- windows7计算机配置要求,教你win7配置最低要求是什么
- 三菱plc pwm指令_三菱PLC常用指令汇总,速存!
- Maven | 05.Maven项目结构及Maven命令
- php rabbit怎么使用默认的交换机,RabbitMQ-交换机模式
- 认知BMS电池管理系统,看这一篇就够了!
- Fbx文件解析(一)——FBX SDK for Windows环境配置