From 25ec196cfaa721052e7157579e04fe61e01d2342 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ryszard=20Wi=C5=9Bniewski?= Date: Tue, 1 Jun 2010 14:06:13 +0200 Subject: [PATCH] From now there is no need to use -s/-r switch, when apk doesn't contain sources/resources. --- src/brut/androlib/Androlib.java | 13 +++------ src/brut/androlib/ApkDecoder.java | 48 ++++++++++++++++++++----------- 2 files changed, 35 insertions(+), 26 deletions(-) diff --git a/src/brut/androlib/Androlib.java b/src/brut/androlib/Androlib.java index 162524f0..2ea7c220 100644 --- a/src/brut/androlib/Androlib.java +++ b/src/brut/androlib/Androlib.java @@ -53,10 +53,8 @@ public class Androlib { LOGGER.warning("Debug mode not available."); } Directory apk = apkFile.getDirectory(); - if (apk.containsFile("classes.dex")) { - LOGGER.info("Copying raw classes.dex file..."); - apkFile.getDirectory().copyToDir(outDir, "classes.dex"); - } + LOGGER.info("Copying raw classes.dex file..."); + apkFile.getDirectory().copyToDir(outDir, "classes.dex"); } catch (DirectoryException ex) { throw new AndrolibException(ex); } @@ -85,11 +83,8 @@ public class Androlib { throws AndrolibException { try { Directory apk = apkFile.getDirectory(); - if (apk.containsFile("resources.arsc")) { - LOGGER.info("Copying raw resources..."); - apkFile.getDirectory().copyToDir( - outDir, APK_RESOURCES_FILENAMES); - } + LOGGER.info("Copying raw resources..."); + apkFile.getDirectory().copyToDir(outDir, APK_RESOURCES_FILENAMES); } catch (DirectoryException ex) { throw new AndrolibException(ex); } diff --git a/src/brut/androlib/ApkDecoder.java b/src/brut/androlib/ApkDecoder.java index 1a7905fd..3f1f0388 100644 --- a/src/brut/androlib/ApkDecoder.java +++ b/src/brut/androlib/ApkDecoder.java @@ -19,6 +19,8 @@ package brut.androlib; import brut.androlib.res.data.ResTable; import brut.androlib.res.util.ExtFile; import brut.common.BrutException; +import brut.directory.Directory; +import brut.directory.DirectoryException; import brut.util.OS; import java.io.File; @@ -61,24 +63,36 @@ public class ApkDecoder { } outDir.mkdirs(); - switch (mDecodeSources) { - case DECODE_SOURCES_NONE: - mAndrolib.decodeSourcesRaw(mApkFile, outDir, mDebug); - break; - case DECODE_SOURCES_SMALI: - mAndrolib.decodeSourcesSmali(mApkFile, outDir, mDebug); - break; - case DECODE_SOURCES_JAVA: - mAndrolib.decodeSourcesJava(mApkFile, outDir, mDebug); - break; + Directory apk = null; + try { + apk = mApkFile.getDirectory(); + } catch (DirectoryException ex) { + throw new AndrolibException(ex); } - switch (mDecodeResources) { - case DECODE_RESOURCES_NONE: - mAndrolib.decodeResourcesRaw(mApkFile, outDir); - break; - case DECODE_RESOURCES_FULL: - mAndrolib.decodeResourcesFull(mApkFile, outDir, getResTable()); - break; + + if (apk.containsFile("classes.dex")) { + switch (mDecodeSources) { + case DECODE_SOURCES_NONE: + mAndrolib.decodeSourcesRaw(mApkFile, outDir, mDebug); + break; + case DECODE_SOURCES_SMALI: + mAndrolib.decodeSourcesSmali(mApkFile, outDir, mDebug); + break; + case DECODE_SOURCES_JAVA: + mAndrolib.decodeSourcesJava(mApkFile, outDir, mDebug); + break; + } + } + if (apk.containsFile("resources.arsc")) { + switch (mDecodeResources) { + case DECODE_RESOURCES_NONE: + mAndrolib.decodeResourcesRaw(mApkFile, outDir); + break; + case DECODE_RESOURCES_FULL: + mAndrolib.decodeResourcesFull(mApkFile, outDir, + getResTable()); + break; + } } mAndrolib.decodeRawFiles(mApkFile, outDir); }