最近一个项目里需要得到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文件相关推荐

  1. 【Android 安全】DEX 加密 ( Java 工具开发 | 解压 apk 文件 | 加密生成 dex 文件 | 打包未签名 apk 文件 | 文件解压缩相关代码 )

    文章目录 一.解压 apk 文件 二.加密生成 dex 文件 三.打包未签名 apk 文件 四.完整代码示例 五.文件解压缩相关代码 六.执行结果 参考博客 : [Android 安全]DEX 加密 ...

  2. Android解压apk包

    1.使用apktool解压apk包 下载地址:https://ibotpeaches.github.io/Apktool/# 命令:apktool d app-release.apk

  3. 【Android 安全】DEX 加密 ( 代理 Application 开发 | 解压 apk 文件 | 判定是否是第一次启动 | 递归删除文件操作 | 解压 Zip 文件操作 )

    文章目录 一.判定是否是第一次启动 二.递归删除文件操作 三.解压 Zip 文件操作 四.解压操作相关代码 参考博客 : [Android 安全]DEX 加密 ( 常用 Android 反编译工具 | ...

  4. python解压7z_python使用7z解压apk包的方法

    本文实例讲述了python使用7z解压apk包的方法.分享给大家供大家参考.具体如下: 这段代码通过shell调用7z对apk包进行解压缩 def run_shell(command, mayFree ...

  5. Android 解压zip文件

    过了n多天后,当再次使用原先博客上写的那篇: Android 压缩解压zip文件 去做zip包的解压的时候,出现了原来没有发现的很多问题.首先是中文汉字问题,使用java的zip包不能很好的解决解压问 ...

  6. Android 解压zip文件你知道多少?

    对于Android常用的压缩格式ZIP,你了解多少? Android的有两种解压ZIP的方法,你知道吗? ZipFile和ZipInputStream的解压效率,你对比过吗? 带着以上问题,现在就开始 ...

  7. Android开发之Zip下载解压

    本篇博客为需求而发烧,若有雷同需求code拿走不谢. 需求如下:点击Item,从服务器下载zip包到本地文件夹并解压,解压后的图片文件全部查询出来,用于界面预览 没有强制每次都下载zip包保持最新,如 ...

  8. android zip格式应用,Android 压缩解压zip文件

    Android 压缩解压zip文件 上次写了个解压缩功能,但有局限性,比如压缩文件xx.zip 里包括子目录的情况下,执行上次解压缩的功能就不能实现我们想要的效果,于是在网上参考了一下java的解压缩 ...

  9. android zip解压进度_android zip4j之--解压zip文件并实时显示解压进度

    Zip文件是我们经常用到压缩文件格式,android中在进行网络请求大批量数据时,通常会采用传递zip文件,这样做即可以减少网络流量的消耗,加快请求的响应速度,又可以减少对存储空间的要求,所以当我们将 ...

最新文章

  1. Spring注解创建Bean的几种方式
  2. (Mark)操作系统原理
  3. zabbix企业应用之bind dns监控(转)
  4. 分布式事务科普(终结篇)
  5. 从源码出发深入理解 Android Service
  6. Kotlin 学习笔记(七)—— Kotlin类与对象之属性与字段
  7. Linux中vim编辑器常用命令、文件查找、磁盘挂载、用户管理
  8. 年全国高校计算机能力挑战赛,初赛公示_2020年全国高校计算机能力挑战赛
  9. [毕业生的商业软件开发之路]现代商业软件开发概况
  10. 语音合成——闽南语合成(1)
  11. 面向对象下 abstract关键字(宋红康JAVASE)
  12. 张志华-统计机器学习-概率论导论
  13. ubuntu下命令行禁用笔记本触摸板
  14. obs弹幕助手android版,obs弹幕助手
  15. Day001:Excel数据分析
  16. 软件测试物理机环境基础
  17. 炫酷动态静图40例——多图杀猫
  18. VNC协议-认证过程
  19. Canvas画图之烟花爆炸demo
  20. 东华理工大学计算机科学与技术怎么样,东华理工大学计算机科学与技术专业介绍...

热门文章

  1. android9壁纸存放路径,Android基础入门教程——10.9 WallpaperManager(壁纸管理器)
  2. 使用gopsolver和SDPA求解库实现C++正定规划
  3. 波数及波数向量(波矢量)
  4. 斗地主游戏Landlord
  5. windows7计算机配置要求,教你win7配置最低要求是什么
  6. 三菱plc pwm指令_三菱PLC常用指令汇总,速存!
  7. Maven | 05.Maven项目结构及Maven命令
  8. php rabbit怎么使用默认的交换机,RabbitMQ-交换机模式
  9. 认知BMS电池管理系统,看这一篇就够了!
  10. Fbx文件解析(一)——FBX SDK for Windows环境配置