Skip to content

Instrumenter

Jordan Samhi edited this page Oct 25, 2026 · 3 revisions

Instrumenter: use Logger

The previous version of this page described an Instrumenter class and methods such as addLogToAllMethods that are not present in the current API. The implementation is com.jordansamhi.androspecter.instrumentation.Logger.

Use the Instrumentation guide for a complete example with AndroidAnalysis, instance-owned options, ordered transformations, and rebuilt graph snapshots.

Previous documentation Current API
Instrumenter.v() Prefer new Logger(analysis.context(), options); deprecated Logger.v() supports the legacy pack workflow
addLogToAllMethods(tag, phaseName) logger.logAllMethods(tag, includeLibraries) registers an operation
addLogToAllMethodCalls(tag, phaseName) logger.logAllMethodCalls(tag, includeLibraries) registers an operation
Registering a returned Transform manually These registration methods return void; use analysis.apply(logger) or TransformationPipeline
Five-argument addLogStatement(...) addLogStatement(units, insertionPoint, tag, message, body, after) mutates immediately

Registration does not execute the operation. Applying a transformation changes the in-memory Soot model; it does not export, sign, or install an APK. Generated messages are deduplicated per process, independently of tag, so they report coverage rather than execution counts.

This guidance targets 2.0.0 on JDK 17. See Getting started for installation and Instrumentation for scope, lifecycle, legacy-pack, and low-level export details.

Clone this wiki locally