Skip to content
Jordan Samhi edited this page Oct 23, 2026 · 2 revisions

AndroLog — Android execution analysis

Instrument an APK. Exercise the app. See what executed.

AndroLog measures Android code coverage and records dynamic call relationships directly from APK bytecode. You do not need the application's Java or Kotlin source. Its standalone HTML report combines coverage totals, a package browser, continuous class listings, and an interactive dynamic call graph.

New here? Follow Installation, then Quick Start. With --capture, one command instruments, signs, installs, and launches the app, captures its logs, and generates reports when you finish testing.

flowchart LR
    A[Original APK] --> B[Instrument and sign]
    B --> C[Run on a device or emulator]
    C --> D[Runtime log]
    A --> E[Build coverage baseline]
    D --> F[HTML and JSON reports]
    E --> F
Loading

Explore the reports

Coverage explorer

Browse packages, select a class, and scroll through its Jimple listing. Green statements were observed; red statements were not observed in the supplied logs. Click statistics to filter methods or Android components.

Coverage explorer showing package navigation and a continuous class listing

Dynamic call graph

Start from the manifest's launcher activity, select a class, and highlight a method's incoming and outgoing calls. Solid edges have a confirmed callee entry. Dashed edges retain the declared target without entry confirmation; this also includes constructors and uninstrumented framework methods.

Dynamic call graph showing the launcher activity and a confirmed interface dispatch

Both screenshots come from an instrumented Android demonstration app running on an emulator. They are examples of the actual report interface.

Find the right guide

I want to… Start here
Build AndroLog and configure signing Installation
Produce my first report Quick Start
Run an interactive or timed capture Capture
Control installation, logging, and reporting myself Manual Workflow
Understand what coverage measures Coverage
Navigate code, statistics, and graph views HTML Report
Understand polymorphism and dashed edges Dynamic Call Graph
Look up a flag or exit code CLI Reference
Process results in my own scripts JSON and Logs
Diagnose an unexpected result Troubleshooting
Understand the implementation or contribute Development

What a run tells you

Coverage and call relationships describe the execution recorded in your logs. Unobserved code may still be reachable, and missing logs can omit executed code. Statement coverage measures arrival at eligible bytecode statements; it does not measure branch outcomes, successful completion, or execution frequency.

AndroLog is developed by Jordan Samhi and distributed under the GNU LGPL v2.1. Questions and reproducible problems can be raised in the issue tracker.

Clone this wiki locally