This document outlines the development roadmap for this fork of Android Translation Layer. The goal is to make ATL easier to build, run, and extend while maintaining coherence with the upstream project.
A CMake orchestrator that wraps multiple different build systems:
- wolfSSL: Autotools (./configure && make)
- libunwind: CMake (native)
- bionic_translation: Meson
- art_standalone: Custom Makefile
- android_translation_layer: Meson
⚠️ Not a true unified build - just shell command wrappers⚠️ ExternalProject_Add with hardcoded commands⚠️ Fragile dependency on system tools (autoconf, meson, ninja)⚠️ No proper CMake target exports between components⚠️ Rebuilds don't always detect changes correctly
- Single command initiates build:
cmake -B build && cmake --build build - Dependencies bundled in
thirdparty/ - Build order enforced: wolfSSL → libunwind → bionic_translation → art_standalone → ATL
- pkg-config files generated for dependency resolution
Convert ALL components to build natively with CMake - no shell wrappers, no Meson, no autotools.
- Use wolfSSL's built-in CMakeLists.txt
- Configure options:
WOLFSSL_TLS13,WOLFSSL_OPENSSLEXTRA, etc. - Export
wolfssl::wolfsslCMake target - Remove autotools dependency
- Already uses CMake natively ✅
- Improve integration with
add_subdirectory()instead of ExternalProject - Export
unwind::unwindCMake target
- Port Meson build to CMakeLists.txt
- Handle C/assembly source compilation
- Export
bionic::translationCMake target - Remove Meson dependency for this component
- Port Makefile build to CMakeLists.txt
- Handle Java compilation with CMake's
UseJavamodule - Integrate dex compilation (d8/dx)
- Export
art::standaloneCMake target - Remove Make dependency for this component
- Port Meson build to CMakeLists.txt
- Handle Java + JNI compilation
- GResource compilation for assets
- GTK4 integration via
find_package(PkgConfig)+pkg_check_modules - Export
atl::runtimeCMake target
- Single CMakeLists.txt at root
- All components use
add_subdirectory() - Proper CMake target dependencies (no ExternalProject)
- Incremental rebuilds work correctly
-
cmake --installworks for all components
# This should be all that's needed:
cmake -B build
cmake --build build
cmake --install buildNo autotools, no Meson, no Make - pure CMake.
- Eliminate wrapper scripts -
atl ./app.apkshould just work - Automatic library path resolution (no
LD_LIBRARY_PATHneeded) - Install to system paths with
cmake --install build - Create
atlsymlink/wrapper that handles environment setup internally
- Embed RPATH in binaries during build
- Use
$ORIGINrelative paths for portable builds - Alternative: Create launcher binary that sets up environment before exec
- Add CMake install rules for all components
- Install to
/usr/local/by default (configurable withCMAKE_INSTALL_PREFIX) - Install libraries to
lib/atl/subdirectory - Create
/usr/local/bin/atllauncher script/binary
- Support
~/.config/atl/configfor user preferences - Auto-detect SDK version from APK's
AndroidManifest.xml - Default to sensible SDK version (28+) without requiring
--sdk-int
Expand API coverage to support more complex Android applications.
-
android.content.pm.PackageInstaller- App installation APIs -
android.app.job.JobScheduler- Background job scheduling -
android.app.NotificationManager- System notifications -
android.accounts.AccountManager- Account management -
android.provider.Settings- System settings access
-
RecyclerView- Efficient scrolling lists -
ViewPager/ViewPager2- Swipeable views -
ConstraintLayout- Modern layout system -
CoordinatorLayout- Material Design behaviors -
BottomNavigationView- Bottom navigation bars -
DrawerLayout- Navigation drawers -
Toolbar/ActionBar- App bars
-
MediaPlayerimprovements - More codec support -
ExoPlayercompatibility - Modern media playback -
Camera2API - Camera access -
OpenGL ES 3.1+features -
Vulkanpassthrough improvements
-
Roomdatabase compatibility -
ContentProviderimprovements - Scoped storage emulation
- SAF (Storage Access Framework)
-
OkHttpcompatibility improvements -
Retrofitcompatibility - WebSocket support
- HTTP/2 support via wolfSSL
-
Servicelifecycle improvements -
IntentService/JobIntentService -
WorkManagercompatibility - Foreground service notifications
Make development and debugging easier.
- Improved logcat-style output
- GDB/LLDB debugging documentation
- Crash report generation
- ANR (App Not Responding) detection
- Automated test suite for API compatibility
- CI/CD pipeline with GitHub Actions
- APK compatibility matrix
- Performance benchmarks
- API implementation status tracker
- Troubleshooting guide
- App porting guide
- Architecture deep-dive
Stay synchronized with upstream development while maintaining fork improvements.
- Regular merges from upstream
master - Document fork-specific changes clearly
- Contribute improvements back upstream where appropriate
- Maintain compatibility with upstream build system
Document intentional differences from upstream:
- Bundled thirdparty dependencies (vs external)
- CMake build system (vs Meson-only)
- Simplified runtime (vs manual LD_LIBRARY_PATH)
Consider upstreaming:
- Bug fixes
- New API implementations
- Documentation improvements
- Build system improvements (if accepted)
Expand platform compatibility beyond x86_64 Linux.
- ARM64 (aarch64) - Priority for ARM laptops
- ARM32 - For older devices
- x86 (32-bit) - Legacy support
- Debian/Ubuntu
.debpackages - Fedora/RHEL
.rpmpackages - Arch Linux
PKGBUILD - Flatpak package
- AppImage portable build
- macOS support (long-term)
- BSD support (experimental)
| Phase | Priority | Effort | Impact | Status |
|---|---|---|---|---|
| Phase 1: Build Wrapper | - | - | Medium | |
| Phase 2: True CMake Build | Critical | Very High | Very High | Not Started |
| Phase 3: Simplified Runtime | High | Medium | High | Not Started |
| Phase 4: Advanced App Support | High | Very High | Very High | Not Started |
| Phase 5: Developer Experience | Medium | Medium | Medium | Not Started |
| Phase 6: Upstream Coherence | Ongoing | Low | Medium | Ongoing |
| Phase 7: Platform Support | Low | High | Medium | Not Started |
- Auto-detect SDK from APK - Parse
AndroidManifest.xmlforminSdkVersion - RPATH embedding - Add
-Wl,-rpath,$ORIGIN/../libto link flags - Desktop file generator - Improve
--installto create proper icons - Error messages - Better "Class not found" messages with suggestions
Current limitations that need addressing:
- SDK Version - Many apps require SDK 21+ but detection is manual
- Google Play Services - Not implemented, breaks many apps
- Native ARM libraries - No ARM emulation, x86 only
- Fragments - Basic support, complex navigation may fail
- WebView - WebKitGTK works but some features missing
See the main README.md for contribution guidelines.
Priority areas for contributions:
- API stubs for popular apps
- Widget implementations (GTK4)
- Test APK compatibility reports
- Documentation improvements
- Build orchestrator wrapping multiple build systems
⚠️ - Bundled dependencies ✅
- Basic app support (Hello World works) ✅
- Requires wrapper script to run
⚠️
- Pure CMake build for all components
- No autotools, Meson, or Make dependencies
cmake -B build && cmake --build build- that's it- Proper incremental rebuilds
- No wrapper scripts needed:
atl ./app.apk - System installation support:
cmake --install build - Auto SDK detection from APK manifest
- RPATH-based library resolution
- RecyclerView support
- Improved fragment handling
- Better notification support
- More Material Design widgets
- Comprehensive API coverage
- ARM64 support
- Distribution packages (.deb, .rpm, Flatpak)
- Stable API for app developers