Repository navigation
Conversation
Add a read-only AXML reader that decodes the ResXMLTree chunk stream — string pool, resource map and the element tree — into deterministic XML text as a document.xml region, following the decoded-region reader pattern. Typed attribute values render literally, android: prefixes come from the resource map or declared namespaces, and coverage, limits and malformed-input failures stay typed. Resource table names, DEX references and component semantics are not resolved. Verified against a real APK AndroidManifest.xml (368 strings, 326 elements, 590 attributes): inspect classifies axml with document facts, and extraction emits the decoded manifest with declared package, versions, permissions and intents intact.
Read-only ResTable (resources.arsc) reader: parses the global string pool, package chunks, type/key pools, type specs and typed entries, and projects a deterministic resources.xml region naming every entry by id and key with its configuration qualifier, public flag and literal value. - Bounded decode (64 MiB file, 1M strings/entries, 96 MiB output) with typed format/limit failures; sparse entries skipped, library/overlay/ staged-alias chunks walked and reported as limitations - Reuses the AXML string-pool and typed-value rendering so values match the manifest decoder exactly - Fixture builder, unit + boundary + MCP tests, docs page, skill note Real-artifact validation: fanqie resources.arsc (4.2 MB, sha256 e4c92dd4) decoded to 4.5 MB valid XML, 60,064 entries, package com.dragon.read/0x7f, app_name resolved to 番茄免费小说 through the UTF-8 global pool, config qualifiers (zh, v22-v31, densities) decoded. Stacked on morluto#9590 (shares axmlDocument exports); diff becomes arsc-only once that lands. Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
resources.arsc— the compiled resource table inside every APK — is currently opaque to artifact inspection: AXML manifests decode but every@0x7f…reference stays numeric, and the table itself is not admitted by any reader.Approach
Read-only
ResTabledecoder following the establishedDecodedRegionArtifactReaderpattern:domain/arscFormat.ts: chunk-type0x0002header recognition + declared factsdomain/android/arscDocument.ts: global string pool, package chunks, type/key pools, type specs, typed entries and configuration qualifiers → deterministicresources.xmlprojectionArscArtifactReader+ detection/inventory/extraction wiring, metadata schemas, format vocabulariesformat/limitfailures; library/overlay/staged-alias chunks walked and reported as limitationsStacked on #9590
This branch builds on
feat-axml-reader(sharedStringPool/renderTypedValueexports). The PR diff shows the complete stack until #9590 merges; the arsc-only change is the top commit (52effad0).Validation
check:fast(typecheck+lint) clean;docs:checkcleanresources.arsc(4.2 MB, sha256e4c92dd4…) → 4.5 MB well-formedresources.xml(xmllint verified), 60,064 entries, packagecom.dragon.read/0x7f,app_name→番茄免费小说via the UTF-8 global pool, config qualifiers (zh,v22–v31, densities) decodedOut of scope
Overlay-policy/library/staged-alias payloads (walked, limited); runtime resource resolution.
Human owner: @blankym