[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$f3kaqhv6qs13dc":3},{"code":4,"message":5,"data":6,"timestamp":26},10000,"success",{"full_name":7,"position":8,"description":9,"language":10,"stars":11,"forks":12,"stars_gained":13,"age_days":14,"hn_threads":15,"one_liner":16,"summary_md":17,"topic":18,"github_topics":21,"license":22,"homepage":23,"updated_at":24,"history":25},"reveny\u002FAndroid-Compatibility-Layer",23,"A translation layer for Android on Linux. Run Android Apps and Games on Linux","Java",52,8,12,4,[],"在 Wayland Linux 上直接运行 APK 的早期兼容层，面向想避开完整 Android 容器的桌面游戏玩家与折腾用户。","ACL 提供了一种在 Linux 桌面上直接运行 APK、而不必启动完整 Android 镜像的早期方案。它不用容器、尽量少做模拟，但作者明确说当前应用支持非常有限，所以更适合当作一次可评估的尝试，而不是日常主力工具。\n\n## 解决什么问题\n\n假设你只想在 Linux 桌面上跑某一个 Android 应用或游戏。常见做法是在 Waydroid 或 Anbox 里启动完整的 Android 镜像、等它开机，或者依赖 ARM 原生桥接。ACL 改成从命令行直接给一个 APK 路径：Java\u002FKotlin 部分由 x86-64 的 ART 执行，ARM64 原生库要么由 LLVM 提前翻译，要么通过 JIT 运行。最终得到的是一个由 Wayland 托管渲染的窗口，而不是模拟出来的设备屏幕。\n\n## 有什么不同\n\nACL 的核心选择是把 Android framework 重新实现到 Linux 上，而不是虚拟化整个系统。窗口走 Wayland，图形通过宿主机 GPU 上的 Vulkan 或 GLES，文字用 FreeType 和 HarfBuzz，存储用 SQLite，音频用 PipeWire。由于多数 Android 游戏以原生代码为主，作者把 AOT 翻译到 x86-64 当作性能论据：热路径上不做 ARM 到 x86 的模拟，图形直接走宿主机 GPU。\n\n代价也很直接，而且作者自己列了出来。按 [README 的缺失功能清单](https:\u002F\u002Fgithub.com\u002Freveny\u002FAndroid-Compatibility-Layer\u002Fblob\u002Fmain\u002FREADME.md)，ACL 目前缺少 SystemUI、binder\u002FIPC、旋转、摄像头、传感器、GPS、电话、蓝牙、NFC、振动、WebView、MediaCodec、硬件视频解码、32 位 ARM 支持、多窗口和权限界面。作者还提醒 LLVM 在大型库上偶尔会崩溃，并说明项目仍处早期、要做好遇到 bug 的准备。这套架构换来了更轻的运行时，却舍弃了普通应用习以为常的大部分平台服务。\n\n## 谁值得试\n\n比较适合的是这样一类人：使用 x86-64 Wayland 桌面，心里有一个以原生代码为主的具体 Android 游戏或简单应用，想在不搭完整 Android 容器的前提下试一试，并且遇到失败时愿意去 [GitHub 提 issue](https:\u002F\u002Fgithub.com\u002Freveny\u002FAndroid-Compatibility-Layer\u002Fissues)。不太适合的是需要日常功能的人：依赖 WebView 的应用、摄像头或定位功能、32 位 ARM APK，或者需要权限弹窗。这些是文档写明的缺口，不是换个参数就可能消失的小毛病，下载之前就该据此调整预期。\n\n## 使用条件与边界\n\nACL 要求 x86-64 Linux 加 Wayland——不支持 X11——并且需要 Vulkan 或 OpenGL ES 驱动。发布包是省事的路子：解压后运行 `bin\u002Facl myapp.apk`，里面已经带了 Android 运行时、framework jar、资源、字体和链接器。从源码构建则重得多：需要 clang、CMake 3.28+、Ninja、带头文件的 LLVM 19+，以及 FreeType、HarfBuzz、SQLite、图像库、Wayland 和 libxkbcommon；安装脚本会拉取精简版 AOSP manifest 并编译宿主机 ART。\n\n项目通过 seccomp、Landlock、私有 PID 与网络命名空间提供隔离；网络访问要显式加 `--network`，作者也明确不建议对不可信应用加 `--no-sandbox`。“LLVM 翻译大型库时可能崩溃”是作者自己写出的限制，也最可能挡住真正想跑的游戏。安装状态默认放在 `~\u002F.local\u002Fshare\u002Facl`，`--uninstall` 会删除该包及其数据；这是否让你放心，取决于应用存了什么数据。\n\n## HotRepo 点评\n\nHotRepo 从 2026-10-24 开始追踪这个仓库，2026-10-25 记录到它在 java 新项目榜上以 52 个总 star 排第 23。这是新项目榜上的一个快照，不是总榜排名，也不是单日增长数据；可比较的历史太少，无法判断关注度能否持续。现阶段更实际的做法是：先拿你真正关心的那个应用，对照文档写明的功能缺口和 issue 列表，再决定要不要花时间构建或下载。",{"slug":19,"name":20},"devops","运维与部署",[],"MIT",null,"2026-10-25T03:19:45Z",[],1792909488]