AAPT is a Java library for Android assets manipulation, it supports read and write resource files. It also provides command line tools.
-
Dump Resource Table
$ java -jar ./target/aapt-0.0.1-SNAPSHOT-jar-with-dependencies.jar dump resources resources.arsc
-
Dump String Pool
$ java -jar ./target/aapt-0.0.1-SNAPSHOT-jar-with-dependencies.jar dump strings resources.arsc
-
Dump XML
$ java -jar ./target/aapt-0.0.1-SNAPSHOT-jar-with-dependencies.jar dump xml AndroidManifest.xml
-
Dump Resource Table
ChunkParser parser = new ChunkParser();
parser.parse("resources.arsc").accept(new ResourceTableVisitor(System.out, true));
```
-
Dump String Pool
ChunkParser parser = new ChunkParser();
parser.parse("resources.arsc").accept(new StringPoolVisitor(System.out, true)); ```
-
Dump XML
ChunkParser parser = new ChunkParser();
parser.parse("AndroidManifest.xml").accept(new XmlVisitor(System.out, true)); ```
-
Write Resource Table
ChunkParser parser = new ChunkParser(); ResourceTable arsc = parser.parse("resources.arsc"); arsc.purge(0, 1, 2, 3, 4, 5); // retain the specified index of strings ChunkOutputStream cos = new ChunkOutputStream(new FileOutputStream("resources.arsc.bak")); cos.write(arsc); cos.close();
-
Parse & Generate Resource Symbols
SymbolParser parser = new SymbolParser(); Symbols symbols = parser.parse("R.txt"); Aapt.generateR("R.java", "com.example", symbols);
-
Inspect APK
ApkFile apk = new ApkFile("app.apk"); Dex main = apk.getMainDex(); Iterable<Dex> dexes = apk.dexes(); Iterable<String> classes = apk.classes(); Xml manifest = apk.getAndroidManifest(); ResourceTable table = apk.getResourceTable();
AAPT library is available on Maven Central Repository
<dependency>
<groupId>com.sdklite</groupId>
<artifactId>aapt</artifactId>
<version>0.0.1</version>
</dependency>
compile 'com.sdklite:aapt:0.0.1'
Please see https://aapt.sdklite.com.