Is Android Written in C? Programming Languages Used
Is Android Written in C? The Short Answer
No. Android is not written in C. The operating system itself is built primarily with Java and Kotlin, with some C and C++ used in specific areas.
If you heard Android was coded in C, you might be thinking of the Linux kernel—which does use C. But Android is much more than the kernel. It's a complete software stack, and different parts use different languages.
Let's break down what language does what.
The Main Android Languages: Java and Kotlin
Java was Android's primary language from the beginning (2008) until 2017. Google officially supported it, and most Android apps you used in the early days were built with Java.
Kotlin replaced Java as the preferred language in 2017 when Google made it the official recommendation. Kotlin is cleaner, has better null safety, and compiles faster than Java in many cases.
These two languages handle:
- The Android SDK (Software Development Kit)
- App UI design
- Business logic
- App architecture
- Most of what developers actually write when building apps
If you're building an Android app today, you'll write it in Kotlin. Java still works, but nobody recommends starting new projects in it.
Where C and C++ Fit In
Android uses C and C++ in two main areas:
The Linux Kernel
Android runs on a modified Linux kernel. That kernel is written in C. This is the foundation everything else runs on. No C here, no Android.
The kernel handles memory management, process scheduling, hardware drivers, and system calls. All low-level stuff that requires maximum performance and direct hardware access.
Native Development Kit (NDK)
The NDK lets developers write performance-critical code in C and C++. This is optional—most apps don't need it.
You use NDK when you need:
- High-performance game engines
- Audio/video processing
- Heavy computational tasks
- Cross-platform code you can reuse in iOS
Games like Fortnite, PUBG, and most 3D mobile games use C/C++ via the NDK. The Unity and Unreal engines both compile to native code.
Other Languages in the Android Ecosystem
Beyond the core OS, Android development has expanded:
- C# — Used with Xamarin for cross-platform development
- Python — Used for automation, testing, and some automation tools
- JavaScript/TypeScript — Used with React Native and other hybrid frameworks
- Dart — Used with Flutter for cross-platform apps
These aren't part of Android itself, but developers use them to build apps that run on Android.
Programming Languages Used in Android: Quick Comparison
| Language | Used For | Required? |
|---|---|---|
| Kotlin | App development, Android SDK | Yes (recommended) |
| Java | App development, Android SDK | Legacy support |
| C | Linux kernel, system drivers | Yes (kernel) |
| C++ | NDK, games, performance-critical code | No (optional) |
| C# | Cross-platform apps (Xamarin) | No (optional) |
| Dart | Cross-platform apps (Flutter) | No (optional) |
Why the Confusion About C?
People mix up Android's architecture layers. The Linux kernel (C) is just one layer. Above it sits the hardware abstraction layer, then the native libraries (many written in C/C++), then the Android runtime (ART), then the framework, then the apps.
When developers say "Android uses C," they're talking about the kernel. When they say "Android apps use Kotlin/Java," they're talking about the app layer. Both are true—they're just different parts of the stack.
What You Actually Need to Know
- Android apps are built with Kotlin (or Java if you're stuck in 2015)
- The Linux kernel underneath uses C
- C/C++ is optional for performance-heavy apps via the NDK
- Most developers never touch C or C++ for Android
If you want to develop for Android, learn Kotlin. That's it. The C underneath is Google's problem, not yours—unless you're building embedded systems or kernel modules, which is a completely different career path.