Android's C standard library, math library, and dynamic linker implementation.
Bionic is Android's implementation of the C standard library (libc), math library (libm), and dynamic linker. It provides the low-level system interfaces and runtime environment required for native Android applications to interact with the Linux kernel and hardware. It solves the problem of providing a lightweight, performant, and standards-compliant C library tailored for Android's architecture and security model.
Android platform developers, system programmers, and maintainers working on the Android OS or building native Android applications that require direct system-level access.
Developers choose Bionic because it is the official, optimized C library for Android, ensuring full compatibility with Android's kernel and security features. Its integration of upstream BSD code provides reliability, while custom components address Android-specific requirements like dynamic linking and system call handling.
Bionic is the C library, math library, and dynamic linker developed for the Android operating system. It provides the foundational system interfaces and runtime environment for native Android applications, ensuring compatibility with POSIX standards and the Linux kernel.
fopen and kill, along with system call wrappers.sin and cos in a separate shared library.Bionic prioritizes correctness, performance, and adherence to standards while being tailored to Android's unique constraints and kernel interfaces. It balances using upstream BSD code where possible with custom implementations for Android-specific needs.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Incorporates unmodified source from FreeBSD, NetBSD, and OpenBSD for proven implementations of standard functions, enhancing reliability and reducing bugs.
Tailored for Android's kernel interfaces and constraints, with custom dynamic linkers (linker/linker64) and system call wrappers optimized for mobile performance.
Includes unit tests, benchmarks, and compatibility tests against glibc and musl, ensuring correctness and adherence to standards through automated verification.
Supports both 32-bit and 64-bit executables with separate linkers and tests, accommodating a wide range of Android devices and facilitating smooth transitions.
Contains messy legacy files in directories like stdio/ described as 'of dubious provenance,' indicating technical debt and maintenance challenges.
Designed exclusively for Android, making it unsuitable for cross-platform projects or non-Android systems without significant modification and setup overhead.
Updating kernel headers or timezone data requires multi-step scripts and coordination with other teams, adding complexity and potential for errors.