From 24b0c3249da29e5e1ddb56c483649e90b471af48 Mon Sep 17 00:00:00 2001 From: Igor Eisberg <8811086+IgorEisberg@users.noreply.github.com> Date: Sat, 22 Jul 2023 16:21:19 +0300 Subject: [PATCH] fix: crash when decompiling framework-res.apk with a tag (regression) (#3193) --- .../brut/androlib/res/ResourcesDecoder.java | 3 --- .../java/brut/androlib/res/data/ResTable.java | 17 ++++++----------- 2 files changed, 6 insertions(+), 14 deletions(-) diff --git a/brut.apktool/apktool-lib/src/main/java/brut/androlib/res/ResourcesDecoder.java b/brut.apktool/apktool-lib/src/main/java/brut/androlib/res/ResourcesDecoder.java index d81e3f59..3cd72704 100644 --- a/brut.apktool/apktool-lib/src/main/java/brut/androlib/res/ResourcesDecoder.java +++ b/brut.apktool/apktool-lib/src/main/java/brut/androlib/res/ResourcesDecoder.java @@ -243,9 +243,6 @@ public class ResourcesDecoder { break; } mResTable.initApkInfo(mApkInfo, outDir); - if (mConfig.frameworkTag != null) { - mApkInfo.usesFramework.tag = mConfig.frameworkTag; - } } return mResTable; } diff --git a/brut.apktool/apktool-lib/src/main/java/brut/androlib/res/data/ResTable.java b/brut.apktool/apktool-lib/src/main/java/brut/androlib/res/data/ResTable.java index 37e2287e..09939fa1 100644 --- a/brut.apktool/apktool-lib/src/main/java/brut/androlib/res/data/ResTable.java +++ b/brut.apktool/apktool-lib/src/main/java/brut/androlib/res/data/ResTable.java @@ -291,7 +291,7 @@ public class ResTable { } private boolean isFrameworkApk() { - for (ResPackage pkg : listMainPackages()) { + for (ResPackage pkg : mMainPackages) { if (pkg.getId() > 0 && pkg.getId() < 64) { return true; } @@ -301,9 +301,7 @@ public class ResTable { public void initApkInfo(ApkInfo apkInfo, File outDir) throws AndrolibException { apkInfo.isFrameworkApk = isFrameworkApk(); - if (!listFramePackages().isEmpty()) { - apkInfo.usesFramework = getUsesFramework(); - } + apkInfo.usesFramework = getUsesFramework(); if (!mApkInfo.getSdkInfo().isEmpty()) { updateSdkInfoFromResources(outDir); } @@ -312,18 +310,15 @@ public class ResTable { } private UsesFramework getUsesFramework() { - Set pkgs = listFramePackages(); - - Integer[] ids = new Integer[pkgs.size()]; + UsesFramework info = new UsesFramework(); + Integer[] ids = new Integer[mFramePackages.size()]; int i = 0; - for (ResPackage pkg : pkgs) { + for (ResPackage pkg : mFramePackages) { ids[i++] = pkg.getId(); } Arrays.sort(ids); - - UsesFramework info = new UsesFramework(); info.ids = Arrays.asList(ids); - + info.tag = mConfig.frameworkTag; return info; }