A legacy Android library for listing running processes by reading /proc; deprecated as of Android 7.0+ due to platform restrictions.
AndroidProcesses
No longer maintained.
As of Android 7.0+, Google blocks the required /proc access for non-system apps.
If you're targeting modern Android, stop here. For historical, forensic, or academic use, read on.
TL;DR
AndroidProcesses enabled process enumeration on Android without special permissions by parsing /proc. This approach worked up through Android 6.0 (Marshmallow). Since Android 7.0 (Nougat), /proc is inaccessible to third-party apps, rendering this library ineffective on new devices.
If your work involves legacy device research, system forensics, or historical Android analysis, read on. Otherwise, note the platform’s current constraints.
Project Overview
AndroidProcesses offered a simple interface to enumerate all running processes and gather details such as PID, memory use, parent/child relationships, and more, with zero special permissions. It was widely adopted by utility apps (e.g., ES File Explorer, Clean Master, Cheetah Mobile products), amassing billions of installs and becoming a standard tool for both system utilities and academic research.
Impact in Research and Security
AndroidProcesses was widely referenced in peer-reviewed security, privacy, and systems research, including:
- Security and privacy analyses of Android’s process model and sandboxing
- Demonstrations of UI deception and side-channel attack feasibility
- Forensic analysis, malware detection, and runtime system monitoring
- Motivation and justification for major platform policy changes
Why was access restricted?
Android 7.0’s restriction of /proc access was motivated by the desire to:
- Improve application sandboxing and user privacy
- Prevent background apps from surveilling user activities and other processes
- Close system-level attack and data leak vectors revealed by research (often using AndroidProcesses)
Usage (for legacy devices)
List<AndroidAppProcess> processes = AndroidProcesses.getRunningAppProcesses();
for (AndroidAppProcess process : processes) {
String processName = process.name;
Stat stat = process.stat();
int pid = stat.getPid();
// ...etc...
}
Functional on Android ≤6.0. On 7.0+, returns nothing due to system restrictions.
Alternatives
- UsageStatsManager: Permission-gated, delayed, limited to usage statistics.
- Accessibility Service: Not designed for process monitoring; limited and discouraged for this use case.
- Custom ROMs, rooted devices, or enterprise device management: Required for deep system introspection on modern Android.
Adoption
Major adoption between 2015–2018 by ES File Explorer, Clean Master, Security Master, CM Launcher 3D, Virus Cleaner, Super Cleaner, and many more. If you analyze utility apps or OEM tools from that period, you will likely encounter AndroidProcesses.
Academic References (selected & annotated)
If referencing this library in academic work, we recommend the following citation format:
BibTeX:
@software{androidprocesses, author = {Rummler, Jared}, title = {AndroidProcesses}, year = {2015}, publisher = {GitHub}, url = {https://github.com/jaredrummler/AndroidProcesses} }
APA: Rummler, J. (2015). AndroidProcesses [Software]. https://github.com/jaredrummler/AndroidProcesses
Selected scholarly citations:
- Tuncay, G. S., Qian, J., & Gunter, C. A. (2020).
- Bianchi, A., et al. (2015).
- Spreitzer, R., Kirchengast, F., Gruss, D., & Mangard, S. (2018).
- Simon, L., Xu, W., & Anderson, R. (2016).
- Chang, M. (2018).
- Dorotík, L. (2020).
- Baresi, L., & Caushi, K. (2021).
- Bianchi, A. (2018).
- Muthu, S. (n.d.).
- Simon, L. (2017).
License
Apache 2.0. See LICENSE.txt.
Further Reading
- Project announcement & postmortem
- Google Issue Tracker: /proc restriction
- Android Developer Docs: UsageStatsManager
bc1qm33s8s0hh5dqffpvv5ahmgyte2sy7g7pjftl43 🖖
Android moved on. So should your app.
Yet as the ecosystem evolves, the importance of transparency, device sovereignty, and open system research remains. For those interested in security, forensics, or platform policy, AndroidProcesses stands as a historical reference point—reminding us that real progress means learning from both the tools we've built and the access we've lost.