Hacker News 中文摘要

RSS订阅

Android 应用在 macOS 上原生运行 -- Android apps running native on macOS

你可以在搭载苹果(Apple)芯片的 Mac 上原生运行安卓(Android)应用,不需要模拟器、虚拟机,底层也没有 Linux。Mac.apk(Mac.apk)仍处于 Alpha 阶段的早期开发中,有些应用运行完美,有些只能部分运行,还有些暂时无法运行;它会作为普通 macOS 进程启动,通过 Mac 的 GPU 绘制,在 CPU 上以原生速度执行,出现在 Dock 中,拥有带返回按钮的独立窗口,并随 Mac 切换浅色和深色模式。

正文

在 Apple Silicon Mac 上原生运行 Android 应用。没有模拟器,没有虚拟机,底层也没有 Linux。

Mac.apk 目前是 Alpha 阶段的早期软件,仍在积极开发中。有些应用运行得很完美,有些只能部分运行,有些还跑不起来。它已经足够稳定,可以日常使用,也值得探索,而且每个版本都在进步。

它是什么

Mac.apk 让 Android 应用直接在 Apple Silicon 上运行。它们以普通 macOS 进程启动,通过 Mac 的 GPU 绘图,并在 CPU 上以原生速度执行;会出现在 Dock 中,拥有独立窗口,红绿灯按钮旁还有返回按钮,可以像普通 Mac 窗口一样调整大小和旋转,并随 Mac 一起在浅色和深色模式间切换。

这里没有模拟器,也没有虚拟机:后台不会启动 Android,底下没有 Linux 内核,指令也不是逐条解释执行。Mac.apk 是直接在 macOS 之上实现了 Android 应用运行环境。工作原理 →

系统要求

  • macOS:26.4(Tahoe)或更新版本(必需)。macOS 27 自 v1.0.1702 起受支持。
  • Apple Silicon:任意 Apple Silicon Mac,包括 MacBook Neo。不支持 Intel Mac。
  • 磁盘:Mac.apk 本身约 280 MB;每个已安装应用大约占用其 APK 大小的 1.5 到 3 倍。

快速开始

  1. 从 Releases 页面下载磁盘映像,把 Mac.apk 拖入“应用程序”。它经过 Apple 签名和公证,可正常打开。
  2. 打开 Mac.apk,点左上角 Runtime: 旁边的 Install。
  3. 打开“设置”(齿轮图标),找到 File types,点 Make Default,并同意 macOS 的提示。
  4. 双击任意 .apk(或 .apkm、.xapk、.apks、.apkx),或把它拖到 Mac.apk 窗口上。

任何应用首次启动都较慢(大型应用最长约一分钟),因为 Mac.apk 要为其做准备;之后启动就快了。完整细节、更新以及应用商店说明见 Installation 和 App stores 页面。

警告:Android 应用的存档数据保存在它自己的 .app 内。把应用拖到废纸篓会连存档一起删除;请改为在 Mac.apk 控制面板中卸载。更多 →

v1.0.2237 中的已知问题

本版本的已知问题见 Known issues;所有经过手工测试的应用见兼容性列表。

报告问题

报告问题时,请把 Mac.apk 版本、你的 macOS 版本、出问题的应用及其来源、具体现象,以及该应用的日志(位于 ~/Library/Logs/macapk/)发送至 Kaleb@voltare.us,或提交 issue。公开发布前请先检查日志内容。需要包含的信息 →

源代码

让 Mac.apk 运行起来的所有代码都在这个仓库里:Android 框架的重实现、原生运行时、arm64 加载器和 Bionic shim、ARM32 重编译器,以及 macOS 应用本身。BUILDING.md 讲如何构建,CONTRIBUTING.md 讲如何提交修复。应用报告和代码一样有用。

开发者与发行商

Mac.apk 按设计不含广告,也不支持应用内购买。如果你发布的应用能在 Mac.apk 上运行,并希望洽谈合作,或者不想让它在这里运行,请发邮件至 Kaleb@voltare.us。详情 →

许可

Mac.apk 以 GNU AGPL v3.0 开源;如果公司想在不遵守 AGPL 条款的情况下分发或提供它,可购买商业许可。使用官方应用是免费的。详见 COMMERCIAL.md。Mac.apk 的名称和徽标另在 TRADEMARKS.md 中规定。

免责声明

Mac.apk 按“as is”提供,不附任何担保。你对自己选择加载的 Android 应用负责;Voltare 无法测试、审计或为任何第三方 APK 背书。对于通过 Mac.apk 运行的代码所导致的损害、数据丢失、恶意软件、安全事件、版权纠纷或其他任何后果,Voltare 不承担责任。

只安装你信任的 APK。在 Mac.apk 下运行的 Android 应用会以普通原生代码运行,并拥有你 macOS 用户账户的权限。它周围没有手机式的应用沙盒:它能像你运行的任何 Mac 应用一样读写你的文件。请像对待自己下载并运行的任何程序一样对待 APK,并确保来源可信。

第三方软件

Mac.apk 捆绑了多个开源组件:ANGLE、MoltenVK 与 Vulkan loader、Capstone、libpng、libvpx、stbvorbis、Bouncy Castle,以及一个基于 OpenJDK 构建的 JRE 及其字体和图像代码所用到的库(如 FreeType、HarfBuzz 和 GLib),还有从 AOSP 源码构建的 Android 平台资源。每个组件都按其自身许可使用;完整声明见 THIRDPARTYNOTICES.txt,应用内也随附一份副本,位于 Contents/Resources/THIRDPARTY_NOTICES.txt。

其中 GLib 和 GNU gettext 的 libintl 采用 LGPL 许可。每个版本中它们所对应确切版本的完整源码(上游源码、补丁和构建方法)都附在该版本的 Releases 页面上,LGPL-SOURCE-README.txt 会说明如何使用修改后的构建。

评论

社区对这个让 Android 应用能在 Mac 上运行的项目普遍感到新鲜和兴奋,但很快分裂为两派:乐观者看重它的创意和特定场景(如 Minecraft 跨平台联机)的价值,务实者则集中质疑它受限于 Google 服务、缺少沙盒与合理数据存储,且代码疑似 LLM 生成的劣质产物。此外,也有人从法律角度联想到 API 版权诉讼的风险,而调侃“下一步做 iOS 版”的声音则代表了一部分社区情绪。

认为项目很酷并期待扩展到 Windows 或 iOS

  • 不少人对把 Android 应用搬到 Mac 上运行感到惊喜,有人第一时间去 star 并准备拿它做实验性项目;还有人呼吁先支持 Windows,或调侃下一步该做 iOS 版。(较多人) > 有人调侃说这很酷,并问下一步是不是要做 iOS.apk(@tuomas2)

认为对 Mac 上的 Minecraft 玩家很实用

  • 有玩家详细解释说,Mac 一直没有官方的基岩版 Minecraft,而主机和移动端玩家只能使用基岩版;借助这个方案在 Mac 上运行 Android 版,就能和好友联机或加入基岩版服务器,省去自己搭建兼容服务器的麻烦。(少数人) > 有人指出这能让 Mac 用户运行 Android 版 Minecraft,从而和主机或移动端玩家一起玩基岩版(@f17428d27584)

质疑 Google 生态依赖会削弱实用性

  • 有人提醒,这个项目离不开 Google Play Services 和各种 Google 围墙花园机制,实际能发挥的作用比理论上有限;不过即便如此,大家仍承认它很酷。(少数人) > 有人指出 Google Play 服务依赖和 Google 的围墙花园会让它的实用性打折扣(@bilalq)

批评技术实现缺少沙盒且数据存储不合理

  • 开发者们指出了几个硬伤:它似乎依赖 JVM 进行模拟,可能无法支持原生 ARM 二进制;同时应用没有沙盒,用户数据和设置被直接写进 .app 包或 /Applications 目录,而不是用户主目录,存在明显的设计和安全隐患。(较多人) > 有人质疑它依赖 Java 虚拟机做模拟且不支持原生 ARM,还把数据直接存在 .app 包里(@LoganDark)

认为代码质量低下且像 LLM 生成

  • 有人严厉批评该仓库,认为其命名极差(导致出现 Mac.apk.app 这种怪异名字),且数据结构、命名等处处是低质量 LLM 生成应用的典型痕迹;甚至有人调侃,如果它真能跑起来,那花在 Claude 订阅上的钱也不算冤枉,暗示大家普遍怀疑它是 LLM 产物。(少数人) > 有人批评命名混乱且整个仓库充满 LLM 生成低质量 app 的迹象(@VCFundedGenYer)

有价值的补充

  • 有人将这个兼容层类比作当年 Google 与 Oracle 围绕 API 合理使用的诉讼,暗示这类让 Android 应用跑在 Mac 上的方案可能触及类似的版权与 API 法律争议。