LoliProfiler captures native allocations in Android applications and displays call stacks, a treemap, memory timeline, screenshots, and smaps data. The desktop GUI and headless capture CLI use the same Qt-free C++ core.
Compare opens dockable Base, Comparer, and Diff views for two captures. Comparison guide.
Build
From the repository root:
python scripts/build.py
The interactive menu builds the GUI, CLI, Android hooks, and release zip. SDK/NDK downloads require your confirmation. See the build guide for prerequisites, non-interactive commands, and Windows/macOS/Linux details.
The GUI’s Console tab shows capture and load timings. GUI and CLI use the same logging API; add --log-file profiler.log to save timestamped diagnostics and --log-level debug for more detail. See the quick start.
Compare two saved captures in independent, dockable Base/Comparer/Diff panels.
agentcli Python package
Query the SQLite call tree from scripts or agents. The loli command remains available.
During capture, choose whether to keep every allocation record or retain only allocations still live at stop. In the Stacktrace panel, the All Allocations / Persistent selector changes the inspection view for saved records. Symbol names require a matching application library with suitable debug information.
Open-source components
The comparer builds on leoin2012’s fork, whose Loli Compare module credits shuchangliu.
The Android hook also draws on upstream stack-trace and sampling techniques documented in Chromium and Perfetto. The JDWP injection approach is described in this article. Legacy toolbar assets credit Smashicons and Freepik.
License
See LICENSE and the licenses in each vendored component.
LoliProfiler
LoliProfiler captures native allocations in Android applications and displays call stacks, a treemap, memory timeline, screenshots, and smaps data. The desktop GUI and headless capture CLI use the same Qt-free C++ core.
Build
From the repository root:
The interactive menu builds the GUI, CLI, Android hooks, and release zip. SDK/NDK downloads require your confirmation. See the build guide for prerequisites, non-interactive commands, and Windows/macOS/Linux details.
The GUI’s Console tab shows capture and load timings. GUI and CLI use the same logging API; add
--log-file profiler.logto save timestamped diagnostics and--log-level debugfor more detail. See the quick start.Documentation
.dbheap explorationWhat the tools do
LoliProfilerImGui.lolifiles.LoliProfilerCLI.txtor SQLite.db; compare captures; symbolize offline.LoliProfilerCompareagentcliPython packagelolicommand remains available.During capture, choose whether to keep every allocation record or retain only allocations still live at stop. In the Stacktrace panel, the All Allocations / Persistent selector changes the inspection view for saved records. Symbol names require a matching application library with suitable debug information.
Open-source components
The comparer builds on leoin2012’s fork, whose Loli Compare module credits shuchangliu.
.dbsnapshot export and agent queries.The Android hook also draws on upstream stack-trace and sampling techniques documented in Chromium and Perfetto. The JDWP injection approach is described in this article. Legacy toolbar assets credit Smashicons and Freepik.
License
See LICENSE and the licenses in each vendored component.