From b2c02d8353670b9d4039e10cdd7308fd92c9a971 Mon Sep 17 00:00:00 2001 From: yonggamer <24843208+yonggamer@users.noreply.github.com> Date: Tue, 6 Oct 2026 11:49:00 +0000 Subject: [PATCH 1/9] Update GitHub Actions to use latest action versions --- .github/workflows/gradle-test.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/gradle-test.yml b/.github/workflows/gradle-test.yml index 051b33efb..dcc35146d 100644 --- a/.github/workflows/gradle-test.yml +++ b/.github/workflows/gradle-test.yml @@ -15,16 +15,16 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v7 - name: Set up JDK 8 - uses: actions/setup-java@v4 + uses: actions/setup-java@v6 with: java-version: '8' distribution: 'temurin' - - uses: gradle/actions/setup-gradle@v4 + - uses: gradle/actions/setup-gradle@v6 - name: Test and build jar run: ./gradlew test jar - - uses: actions/upload-artifact@v4 + - uses: actions/upload-artifact@v7 with: name: ARSCLib path: build/libs From 76c465a5ce705eac361a758376d3aeacf2af20fb Mon Sep 17 00:00:00 2001 From: yonggamer <24843208+yonggamer@users.noreply.github.com> Date: Tue, 6 Oct 2026 12:01:55 +0000 Subject: [PATCH 2/9] Update Gradle wrapper to version 8.14.2 --- gradle/wrapper/gradle-wrapper.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 8a91a6b65..17b9d0f70 100755 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https://services.gradle.org/distributions/gradle-6.5.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.2-all.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists From 714a7a440b43494f89e2db29f06ce1876eb221c0 Mon Sep 17 00:00:00 2001 From: yonggamer <24843208+yonggamer@users.noreply.github.com> Date: Tue, 6 Oct 2026 12:07:03 +0000 Subject: [PATCH 3/9] Update Gradle wrapper to version 9.8.0 --- gradle/wrapper/gradle-wrapper.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 17b9d0f70..79f341411 100755 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.2-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.8.0-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists From 1d67d2e0221ed2af9604cf2900903235b1899b32 Mon Sep 17 00:00:00 2001 From: yonggamer <24843208+yonggamer@users.noreply.github.com> Date: Tue, 6 Oct 2026 12:16:38 +0000 Subject: [PATCH 4/9] Update Gradle wrapper to version 8.14.5 --- gradle/wrapper/gradle-wrapper.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 79f341411..b41387345 100755 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-9.8.0-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.5-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists From a70c774114b83f98871d6c8a216677bcb9ae0b86 Mon Sep 17 00:00:00 2001 From: yonggamer <24843208+yonggamer@users.noreply.github.com> Date: Tue, 6 Oct 2026 14:33:45 +0200 Subject: [PATCH 5/9] Change Gradle distribution URL to 'all' version --- gradle/wrapper/gradle-wrapper.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index b41387345..1669a501f 100755 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.5-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.5-all.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists From 2a3d35701ed049b17e82d689dd357182350414e6 Mon Sep 17 00:00:00 2001 From: yonggamer <24843208+yonggamer@users.noreply.github.com> Date: Tue, 6 Oct 2026 12:45:07 +0000 Subject: [PATCH 6/9] Enhance ResXmlPullParser to handle reference attributes and add corresponding unit test --- .../arsc/chunk/xml/ResXmlPullParser.java | 5 ++++- .../arsc/chunk/xml/ResXmlDocumentTest.java | 18 ++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/reandroid/arsc/chunk/xml/ResXmlPullParser.java b/src/main/java/com/reandroid/arsc/chunk/xml/ResXmlPullParser.java index aeaaa87e4..25b57bf0b 100644 --- a/src/main/java/com/reandroid/arsc/chunk/xml/ResXmlPullParser.java +++ b/src/main/java/com/reandroid/arsc/chunk/xml/ResXmlPullParser.java @@ -209,11 +209,14 @@ private int convertValueToList(String value, String[] options, int defaultValue) private int getAttributeIntValue(ResXmlAttribute xmlAttribute, int defaultValue) { if(xmlAttribute != null) { + ValueType valueType = xmlAttribute.getValueType(); + if(valueType != null && valueType.isReference()) { + return xmlAttribute.getData(); + } int type = xmlAttribute.getType() & 0xff; if(type > 0x10 && type <= 0x1f) { return xmlAttribute.getData(); } - // TODO: resolve if type is REFERENCE } return defaultValue; } diff --git a/src/test/java/com/reandroid/arsc/chunk/xml/ResXmlDocumentTest.java b/src/test/java/com/reandroid/arsc/chunk/xml/ResXmlDocumentTest.java index bfa2aa710..6f1407c24 100644 --- a/src/test/java/com/reandroid/arsc/chunk/xml/ResXmlDocumentTest.java +++ b/src/test/java/com/reandroid/arsc/chunk/xml/ResXmlDocumentTest.java @@ -1,9 +1,11 @@ package com.reandroid.arsc.chunk.xml; +import android.content.res.XmlResourceParser; import com.reandroid.apk.AndroidFrameworks; import com.reandroid.apk.ApkModule; import com.reandroid.arsc.chunk.TableBlock; import com.reandroid.arsc.model.ResourceLibrary; +import com.reandroid.arsc.value.ValueType; import com.reandroid.xml.XMLFactory; import org.junit.Assert; import org.junit.Test; @@ -114,6 +116,22 @@ public void testRemoveAttribute(){ Assert.assertEquals("Attribute count", 0, root.getAttributeCount()); } @Test + public void testAttributeIntValueForReference() throws IOException, XmlPullParserException { + ResXmlDocument document = new ResXmlDocument(); + ResXmlElement manifest = document.getOrCreateElement("manifest"); + ResXmlElement app = manifest.newElement("application"); + ResXmlAttribute icon = app.getOrCreateAndroidAttribute("icon", 0x7f010123); + int resourceId = 0x7f010123; + icon.setTypeAndData(ValueType.REFERENCE, resourceId); + + XmlResourceParser parser = app.getResourceParser(); + Assert.assertEquals(XmlPullParser.START_TAG, parser.next()); + Assert.assertEquals(resourceId, parser.getAttributeIntValue( + ResourceLibrary.URI_ANDROID, + "icon", + -1)); + } + @Test public void testEncodeDecodeXml() throws XmlPullParserException, IOException { ResXmlDocument document = new ResXmlDocument(); document.setApkFile(createEmptyApkModule()); From 8f4c074189d9e5770f1e5c1649ee0722e9a51211 Mon Sep 17 00:00:00 2001 From: yonggamer <24843208+yonggamer@users.noreply.github.com> Date: Tue, 6 Oct 2026 15:45:16 +0200 Subject: [PATCH 7/9] remove \ --- gradle/wrapper/gradle-wrapper.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 1669a501f..9a98d77e0 100755 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.5-all.zip +distributionUrl=https://services.gradle.org/distributions/gradle-8.14.5-all.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists From a98c90a66fd427b2b2555e2780017f59a872d726 Mon Sep 17 00:00:00 2001 From: yonggamer <24843208+yonggamer@users.noreply.github.com> Date: Wed, 7 Oct 2026 17:32:30 +0200 Subject: [PATCH 8/9] smaller download --- gradle/wrapper/gradle-wrapper.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 9a98d77e0..e8d0ad88e 100755 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https://services.gradle.org/distributions/gradle-8.14.5-all.zip +distributionUrl=https://services.gradle.org/distributions/gradle-8.14.5-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists From c1a31d44c74916a76c9cfc4f0807a6aec877927b Mon Sep 17 00:00:00 2001 From: yonggamer <24843208+yonggamer@users.noreply.github.com> Date: Sat, 10 Oct 2026 02:47:43 +0200 Subject: [PATCH 9/9] Update gradle --- gradle/wrapper/gradle-wrapper.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index e8d0ad88e..f1ba1b3d0 100755 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https://services.gradle.org/distributions/gradle-8.14.5-bin.zip +distributionUrl=https://services.gradle.org/distributions/gradle-8.14.6-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists