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:

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:

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:

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

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.