From 992de66bac56092b1f82abb8d8c61ed852ebae80 Mon Sep 17 00:00:00 2001 From: IgorEisberg Date: Sat, 3 Jul 2021 22:17:00 +0300 Subject: [PATCH] Handle setAnalysisMode properly --- .../apktool-cli/src/main/java/brut/apktool/Main.java | 2 +- .../src/main/java/brut/androlib/ApkDecoder.java | 11 +++-------- 2 files changed, 4 insertions(+), 9 deletions(-) diff --git a/brut.apktool/apktool-cli/src/main/java/brut/apktool/Main.java b/brut.apktool/apktool-cli/src/main/java/brut/apktool/Main.java index 263b1fd8..9d426a5a 100644 --- a/brut.apktool/apktool-cli/src/main/java/brut/apktool/Main.java +++ b/brut.apktool/apktool-cli/src/main/java/brut/apktool/Main.java @@ -149,7 +149,7 @@ public class Main { decoder.setFrameworkDir(cli.getOptionValue("p")); } if (cli.hasOption("m") || cli.hasOption("match-original")) { - decoder.setAnalysisMode(true, false); + decoder.setAnalysisMode(true); } if (cli.hasOption("api") || cli.hasOption("api-level")) { decoder.setApiLevel(Integer.parseInt(cli.getOptionValue("api"))); diff --git a/brut.apktool/apktool-lib/src/main/java/brut/androlib/ApkDecoder.java b/brut.apktool/apktool-lib/src/main/java/brut/androlib/ApkDecoder.java index e834dc08..25c6045f 100644 --- a/brut.apktool/apktool-lib/src/main/java/brut/androlib/ApkDecoder.java +++ b/brut.apktool/apktool-lib/src/main/java/brut/androlib/ApkDecoder.java @@ -103,7 +103,6 @@ public class ApkDecoder { mAndrolib.decodeResourcesRaw(mApkFile, outDir); if (mForceDecodeManifest == FORCE_DECODE_MANIFEST_FULL) { setTargetSdkVersion(); - setAnalysisMode(mAnalysisMode, true); // done after raw decoding of resources because copyToDir overwrites dest files if (hasManifest()) { @@ -113,7 +112,6 @@ public class ApkDecoder { break; case DECODE_RESOURCES_FULL: setTargetSdkVersion(); - setAnalysisMode(mAnalysisMode, true); if (hasManifest()) { mAndrolib.decodeManifestWithResources(mApkFile, outDir, getResTable()); @@ -216,14 +214,10 @@ public class ApkDecoder { mDecodeAssets = mode; } - public void setAnalysisMode(boolean mode, boolean pass) throws AndrolibException{ + public void setAnalysisMode(boolean mode) { mAnalysisMode = mode; - // only set mResTable, once it exists - if (pass) { - if (mResTable == null) { - mResTable = getResTable(); - } + if (mResTable != null) { mResTable.setAnalysisMode(mode); } } @@ -268,6 +262,7 @@ public class ApkDecoder { "Apk doesn't contain either AndroidManifest.xml file or resources.arsc file"); } mResTable = mAndrolib.getResTable(mApkFile, hasResources); + mResTable.setAnalysisMode(mAnalysisMode); } return mResTable; }