📈 GH Trending Explorer 🎲 Surprise me

← all repos

reveny / Android-Compatibility-Layer

git clone https://github.com/reveny/Android-Compatibility-Layer.git v1.0.0 · 2d ago

A translation layer for Android on Linux. Run Android Apps and Games on Linux

+1
stars, 24h · #23,333
+50
stars, 7 days · #4,011
+50
stars, 30 days · #13,501
50
★ total · +50% this week
6
forks · 0 open issues

Star history (as recorded here)

2026-10-21 · 29 ★ 2026-10-23 · 50 ★
LanguageJava
LicenseMIT
Created2026-10-20 (2d ago)
Last pushtoday
Watchers0
OwnerUser

Links

README excerpt
# Android-Compatibility-Layer
A translation layer for Android on Linux. Run Android Apps and Games on Linux
## Introduction
ACL (Android Compatibility Layer) runs an APK directly on the Linux system without using virtual machines, containers or Android system images.
 [code] 
Usually an Android app is divided into two parts. Dex and Native code. ACL treats them as follows:
- Dex bytecode runs on a ART build from AOSP source code.
- ARM64 native libraries are translated ahead of time to x86_64 by LLVM or ran directly using JIT
The Android framework itself is reimplemented on Linux. This includes using wayland for windows, handling for Vulkan and GLES, FreeType and HarfBuzz for text, SQLite for storage and PipeWire for audio.
## Disclaimer
This project is still in a very early stage and app support is still very limited. If you find an app that isn't supported, please open a Github issue and I'll do my best to support it.
## Supported
- x86-64 Linux with only Wayland support for now
- Vulkan or OpenGL ES driver
- `arm64-v8a` and `x86_64` APKs
## What is different here?
Most of the other projects I've seen either boot a full Android image in a container (Waydroid, Anbox) and still need a native bridge for ARM code.
This project does it differently:
- Java and Kotlin code is never translated as dex is ran by x86_64 ART directly on the system
- ARM64 code is recompiled ahead of time. This is done with the help of LLVM.
- Graphics go straight to the host gpu rather than being emulated.
## Why it's faster for gaming
Most Android games are mostly native code. Emulating this code is slow, especially emulation of ARM64 on x86_64. That's why we
- The entire native library is translated to x86_64. That means it can run natively on linux without any soft of translation.
- No memory access slowdown
- Native graphics
## Features
- Install and run apks
- Split apks and multidex support
- Activity lifecycle, back state, intents, saved instance state, fragments, services, broadcasts, alarms, jobs
- Canvas, Paint, Path, Region, Bitmap
- SufaceView, NativeActivity
- SQLite, Handler/Looper/MessageQueue
- Audio
- Touch
## What's missing
- SystemUI
- No binder, IPC
- No rotation
- No camera, sensors, gps, telephony, bluetooth, nfc, vibration
- No WebView, no MediaCodec, no hardware view decode
- No 32 bit arm support
- No multi window
- No permission UI
- LLVM sometimes crashes on big libraries
Still early. Expect bugs.
## Security
Since all the code runs on the host system, there are several security measures in place. Those include:
- seccomp
- landlock
- private pid namespace
- private network namespace
You can turn off sandboxing with `--no-sandbox` but it's not recommended for untrusted apps.
## Building and Installation
### Release bundle
 [code] 
It includes the Android runtime, `framework.jar`, the framework resources, fonts, the linker and everything else it needs.
### From source
Needs clang, CMake 3.28+, Ninja, LLVM 19+ with headers, FreeType, HarfBuzz, SQLi