Mobile Development 9 min read

Zero‑Instrumentation Interaction and Performance Monitoring for Large‑Scale Mobile Apps

The article presents a comprehensive approach to solving crash and performance issues in large‑scale mobile applications by reconstructing user interaction traces through a no‑track analytics platform, compile‑time AOP instrumentation, and unified data aggregation, ultimately improving debugging efficiency and reducing operational overhead.

Qunar Tech Salon
Qunar Tech Salon
Qunar Tech Salon
Zero‑Instrumentation Interaction and Performance Monitoring for Large‑Scale Mobile Apps

Zhang Zitian, the client technology director at Qunar, shares his experience from a Ctrip technical salon where he discusses the challenges of large‑scale mobile client development, especially the difficulty of quickly locating obscure crashes and performance problems.

Typical user reports only contain limited information such as crash time, page, and reason, making traditional crash‑log analysis inefficient and often requiring many engineers to be involved late at night.

To address this, the team proposes a three‑layer solution: a no‑track interaction statistics platform, performance monitoring, and exception monitoring, all aimed at reconstructing the complete user journey without intrusive instrumentation.

The no‑track interaction platform (QAV) collects interaction logs from three independent systems—untracked interaction statistics, performance monitoring, and exception monitoring—by using a unique widget identifier based on XPath, which overcomes the limitations of view IDs and coordinate‑based methods.

Technical implementation relies on compile‑time AOP using a JavaAgent. Custom Gradle tasks (installInject and uninstallInject) attach the agent to the JVM, inject bytecode with ASM, and ensure the agent is removed after the build, providing a non‑intrusive way to capture interaction and network data.

Performance monitoring extends the same AOP technique to capture network requests. While iOS allows runtime hooking via provided APIs, Android requires compile‑time instrumentation because runtime dex manipulation is impractical.

Data aggregation is achieved by compressing and uploading logs, generating a requestId for each interaction, injecting it into subsequent network calls, and aligning all events using synchronized timestamps, thereby creating a unified timeline of user actions, network activity, and exceptions.

The result is a reliable reconstruction of user sessions that dramatically reduces debugging time, lowers communication costs, and integrates into the broader "Jindouyun" system that supports the entire app lifecycle from development to operation.

monitoringanalyticsaopzero-instrumentation
Qunar Tech Salon
Written by

Qunar Tech Salon

Qunar Tech Salon is a learning and exchange platform for Qunar engineers and industry peers. We share cutting-edge technology trends and topics, providing a free platform for mid-to-senior technical professionals to exchange and learn.

0 followers
Reader feedback

How this landed with the community

login Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.