From fc28ac56efa4f622f29e9a8de8c7a184e1d9d5aa Mon Sep 17 00:00:00 2001 From: Connor Tumbleson Date: Mon, 21 Mar 2022 07:44:22 -0400 Subject: [PATCH] Merge pull request #2785 from iBotPeaches/revert-2650-fix-private-reference Revert "fix: decoding references to private resources" --- .../brut/androlib/res/data/ResResSpec.java | 19 +++---------------- .../androlib/res/decoder/ARSCDecoder.java | 8 ++++---- .../androlib/aapt2/BuildAndDecodeTest.java | 10 ---------- .../aapt2/testapp/res/values/bools.xml | 4 ---- .../aapt2/testapp/res/values/colors.xml | 4 ---- 5 files changed, 7 insertions(+), 38 deletions(-) delete mode 100644 brut.apktool/apktool-lib/src/test/resources/aapt2/testapp/res/values/bools.xml delete mode 100644 brut.apktool/apktool-lib/src/test/resources/aapt2/testapp/res/values/colors.xml diff --git a/brut.apktool/apktool-lib/src/main/java/brut/androlib/res/data/ResResSpec.java b/brut.apktool/apktool-lib/src/main/java/brut/androlib/res/data/ResResSpec.java index f967f54e..88cded09 100644 --- a/brut.apktool/apktool-lib/src/main/java/brut/androlib/res/data/ResResSpec.java +++ b/brut.apktool/apktool-lib/src/main/java/brut/androlib/res/data/ResResSpec.java @@ -18,7 +18,6 @@ package brut.androlib.res.data; import brut.androlib.AndrolibException; import brut.androlib.err.UndefinedResObjectException; -import brut.androlib.res.decoder.ARSCDecoder; import org.apache.commons.lang3.StringUtils; import java.util.LinkedHashMap; @@ -29,13 +28,11 @@ import java.util.Set; public class ResResSpec { private final ResID mId; private final String mName; - private final int mFlags; private final ResPackage mPackage; private final ResTypeSpec mType; private final Map mResources = new LinkedHashMap<>(); - public ResResSpec(ResID id, String name, int flags, ResPackage pkg, ResTypeSpec type) { - this.mFlags = flags; + public ResResSpec(ResID id, String name, ResPackage pkg, ResTypeSpec type) { this.mId = id; String cleanName; @@ -75,19 +72,13 @@ public class ResResSpec { return mResources.containsKey(new ResConfigFlags()); } - public boolean isPublicResource() { - return (getFlags() & ARSCDecoder.ENTRY_FLAG_PUBLIC) != 0; - } - public String getFullName(ResPackage relativeToPackage, boolean excludeType) { return getFullName(getPackage().equals(relativeToPackage), excludeType); } public String getFullName(boolean excludePackage, boolean excludeType) { - String privateSuffix = isPublicResource() ? "" : "*"; - String packageName = excludePackage ? "" : getPackage().getName() + ":"; - return (packageName.isEmpty() ? "" : privateSuffix + packageName) - + (excludeType ? "" : getType().getName() + "/") + getName(); + return (excludePackage ? "" : getPackage().getName() + ":") + + (excludeType ? "" : getType().getName() + "/") + getName(); } public ResID getId() { @@ -106,10 +97,6 @@ public class ResResSpec { return mType; } - public int getFlags() { - return mFlags; - } - public boolean isDummyResSpec() { return getName().startsWith("APKTOOL_DUMMY_"); } diff --git a/brut.apktool/apktool-lib/src/main/java/brut/androlib/res/decoder/ARSCDecoder.java b/brut.apktool/apktool-lib/src/main/java/brut/androlib/res/decoder/ARSCDecoder.java index 4ec0853e..0b11dd51 100644 --- a/brut.apktool/apktool-lib/src/main/java/brut/androlib/res/decoder/ARSCDecoder.java +++ b/brut.apktool/apktool-lib/src/main/java/brut/androlib/res/decoder/ARSCDecoder.java @@ -336,12 +336,12 @@ public class ARSCDecoder { if (spec.isDummyResSpec()) { removeResSpec(spec); - spec = new ResResSpec(resId, mSpecNames.getString(specNamesId), entryData.mFlags, mPkg, mTypeSpec); + spec = new ResResSpec(resId, mSpecNames.getString(specNamesId), mPkg, mTypeSpec); mPkg.addResSpec(spec); mTypeSpec.addResSpec(spec); } } else { - spec = new ResResSpec(resId, mSpecNames.getString(specNamesId), entryData.mFlags, mPkg, mTypeSpec); + spec = new ResResSpec(resId, mSpecNames.getString(specNamesId), mPkg, mTypeSpec); mPkg.addResSpec(spec); mTypeSpec.addResSpec(spec); } @@ -538,7 +538,7 @@ public class ARSCDecoder { continue; } - ResResSpec spec = new ResResSpec(new ResID(resId | i), "APKTOOL_DUMMY_" + Integer.toHexString(i), ENTRY_FLAG_PUBLIC, mPkg, mTypeSpec); + ResResSpec spec = new ResResSpec(new ResID(resId | i), "APKTOOL_DUMMY_" + Integer.toHexString(i), mPkg, mTypeSpec); // If we already have this resID dont add it again. if (! mPkg.hasResSpec(new ResID(resId | i))) { @@ -602,7 +602,7 @@ public class ARSCDecoder { private final HashMap mResTypeSpecs = new HashMap<>(); private final static short ENTRY_FLAG_COMPLEX = 0x0001; - public final static short ENTRY_FLAG_PUBLIC = 0x0002; + private final static short ENTRY_FLAG_PUBLIC = 0x0002; private final static short ENTRY_FLAG_WEAK = 0x0004; public static class Header { diff --git a/brut.apktool/apktool-lib/src/test/java/brut/androlib/aapt2/BuildAndDecodeTest.java b/brut.apktool/apktool-lib/src/test/java/brut/androlib/aapt2/BuildAndDecodeTest.java index 214c6f97..f94462df 100644 --- a/brut.apktool/apktool-lib/src/test/java/brut/androlib/aapt2/BuildAndDecodeTest.java +++ b/brut.apktool/apktool-lib/src/test/java/brut/androlib/aapt2/BuildAndDecodeTest.java @@ -72,16 +72,6 @@ public class BuildAndDecodeTest extends BaseTest { compareValuesFiles("values/strings.xml"); } - @Test - public void valuesColorsTest() throws BrutException { - compareValuesFiles("values/colors.xml"); - } - - @Test - public void valuesBoolsTest() throws BrutException { - compareValuesFiles("values/bools.xml"); - } - @Test public void valuesMaxLengthTest() throws BrutException { compareValuesFiles("values-es/strings.xml"); diff --git a/brut.apktool/apktool-lib/src/test/resources/aapt2/testapp/res/values/bools.xml b/brut.apktool/apktool-lib/src/test/resources/aapt2/testapp/res/values/bools.xml deleted file mode 100644 index b36f3954..00000000 --- a/brut.apktool/apktool-lib/src/test/resources/aapt2/testapp/res/values/bools.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - @*android:bool/config_enableActivityRecognitionHardwareOverlay - diff --git a/brut.apktool/apktool-lib/src/test/resources/aapt2/testapp/res/values/colors.xml b/brut.apktool/apktool-lib/src/test/resources/aapt2/testapp/res/values/colors.xml deleted file mode 100644 index eb11a5b2..00000000 --- a/brut.apktool/apktool-lib/src/test/resources/aapt2/testapp/res/values/colors.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - @*android:color/Indigo_700 -