The upcoming version 0.9.4 of the Profiler adds support for Android’s binary XML format (such as that used by AndroidManifest.xml).
Let’s take the sample output of the aapt tool in the Android SDK:
N: android=http://schemas.android.com/apk/res/android
E: manifest (line=22)
A: package="com.example.android.notepad" (Raw: "com.example.android.notepad")
E: uses-sdk (line=25)
A: android:minSdkVersion(0x0101020c)=(type 0x10)0xb
E: application (line=27)
A: android:label(0x01010001)=@0x7f040000
A: android:icon(0x01010002)=@0x7f020000
E: provider (line=30)
A: android:name(0x01010003)="NotePadProvider" (Raw: "NotePadProvider")
A: android:exported(0x01010010)=(type 0x12)0x0
A: android:authorities(0x01010018)="com.google.provider.NotePad" (Raw: "com.google.provider.NotePad")
E: grant-uri-permission (line=33)
A: android:pathPattern(0x0101002c)=".*" (Raw: ".*")
E: activity (line=36)
A: android:label(0x01010001)=@0x7f040005
A: android:name(0x01010003)="NotesList" (Raw: "NotesList")
E: intent-filter (line=37)
E: action (line=38)
A: android:name(0x01010003)="android.intent.action.MAIN" (Raw: "android.intent.action.MAIN")
E: category (line=39)
A: android:name(0x01010003)="android.intent.category.LAUNCHER" (Raw: "android.intent.category.LAUNCHER")
E: intent-filter (line=41)
E: action (line=42)
A: android:name(0x01010003)="android.intent.action.VIEW" (Raw: "android.intent.action.VIEW")
E: action (line=43)
A: android:name(0x01010003)="android.intent.action.EDIT" (Raw: "android.intent.action.EDIT")
E: action (line=44)
A: android:name(0x01010003)="android.intent.action.PICK" (Raw: "android.intent.action.PICK")
E: category (line=45)
A: android:name(0x01010003)="android.intent.category.DEFAULT" (Raw: "android.intent.category.DEFAULT")
E: data (line=46)
A: android:mimeType(0x01010026)="vnd.android.cursor.dir/vnd.google.note" (Raw: "vnd.android.cursor.dir/vnd.google.note")
E: intent-filter (line=48)
E: action (line=49)
A: android:name(0x01010003)="android.intent.action.GET_CONTENT" (Raw: "android.intent.action.GET_CONTENT")
E: category (line=50)
A: android:name(0x01010003)="android.intent.category.DEFAULT" (Raw: "android.intent.category.DEFAULT")
E: data (line=51)
A: android:mimeType(0x01010026)="vnd.android.cursor.item/vnd.google.note" (Raw: "vnd.android.cursor.item/vnd.google.note")
E: activity (line=55)
A: android:theme(0x01010000)=@0x103006e
A: android:name(0x01010003)="NoteEditor" (Raw: "NoteEditor")
A: android:screenOrientation(0x0101001e)=(type 0x10)0x4
A: android:configChanges(0x0101001f)=(type 0x11)0xa0
E: intent-filter (line=62)
A: android:label(0x01010001)=@0x7f04000f
E: action (line=63)
A: android:name(0x01010003)="android.intent.action.VIEW" (Raw: "android.intent.action.VIEW")
E: action (line=64)
A: android:name(0x01010003)="android.intent.action.EDIT" (Raw: "android.intent.action.EDIT")
E: action (line=65)
A: android:name(0x01010003)="com.android.notepad.action.EDIT_NOTE" (Raw: "com.android.notepad.action.EDIT_NOTE")
E: category (line=66)
A: android:name(0x01010003)="android.intent.category.DEFAULT" (Raw: "android.intent.category.DEFAULT")
E: data (line=67)
A: android:mimeType(0x01010026)="vnd.android.cursor.item/vnd.google.note" (Raw: "vnd.android.cursor.item/vnd.google.note")
E: intent-filter (line=74)
E: action (line=75)
A: android:name(0x01010003)="android.intent.action.INSERT" (Raw: "android.intent.action.INSERT")
E: action (line=76)
A: android:name(0x01010003)="android.intent.action.PASTE" (Raw: "android.intent.action.PASTE")
E: category (line=77)
A: android:name(0x01010003)="android.intent.category.DEFAULT" (Raw: "android.intent.category.DEFAULT")
E: data (line=78)
A: android:mimeType(0x01010026)="vnd.android.cursor.dir/vnd.google.note" (Raw: "vnd.android.cursor.dir/vnd.google.note")
E: activity (line=83)
A: android:theme(0x01010000)=@0x103006f
A: android:label(0x01010001)=@0x7f040002
A: android:icon(0x01010002)=@0x7f020003
A: android:name(0x01010003)="TitleEditor" (Raw: "TitleEditor")
A: android:windowSoftInputMode(0x0101022b)=(type 0x11)0x4
E: intent-filter (line=92)
A: android:label(0x01010001)=@0x7f040010
E: action (line=96)
A: android:name(0x01010003)="com.android.notepad.action.EDIT_TITLE" (Raw: "com.android.notepad.action.EDIT_TITLE")
E: category (line=98)
A: android:name(0x01010003)="android.intent.category.DEFAULT" (Raw: "android.intent.category.DEFAULT")
E: category (line=101)
A: android:name(0x01010003)="android.intent.category.ALTERNATIVE" (Raw: "android.intent.category.ALTERNATIVE")
E: category (line=104)
A: android:name(0x01010003)="android.intent.category.SELECTED_ALTERNATIVE" (Raw: "android.intent.category.SELECTED_ALTERNATIVE")
E: data (line=106)
A: android:mimeType(0x01010026)="vnd.android.cursor.item/vnd.google.note" (Raw: "vnd.android.cursor.item/vnd.google.note")
E: activity (line=110)
A: android:label(0x01010001)=@0x7f040001
A: android:icon(0x01010002)=@0x7f020006
A: android:name(0x01010003)="NotesLiveFolder" (Raw: "NotesLiveFolder")
E: intent-filter (line=112)
E: action (line=113)
A: android:name(0x01010003)="android.intent.action.CREATE_LIVE_FOLDER" (Raw: "android.intent.action.CREATE_LIVE_FOLDER")
E: category (line=114)
A: android:name(0x01010003)="android.intent.category.DEFAULT" (Raw: "android.intent.category.DEFAULT")
And now the output of the Profiler:
Of course UI XMLs can be opened as well:
The converter can be used from Python as well as a filter called ‘android/from_axml‘.
The new version will be out in a few days. Stay tuned!