夜雨聆风学习资料网

ARTICLE · 1284639

苹果Mac系统终于能双击运行安卓APK了:不开模拟器,也不装虚拟机

苹果Mac系统终于能双击运行安卓APK了:不开模拟器,也不装虚拟机

导读: 一个 3565 星的 AGPL 开源项目,把安卓 App 直接变成 Mac 程序——双击 APK 就装,装完出现在 Dock 里,走 Metal 显卡。这篇把原理、能跑什么、几个必须先知道的坑,一次说清。

开源项目Mac.apk

它的目标很简单:

Mac.apk 可以让安卓应用直接在 Apple Silicon Mac 上以全速原生运行。

它不是模拟器、不是虚拟机,底层没有 Linux、不需要 Docker、Rosetta 或者 Wine。

安卓应用和普通 Mac 软件一样启动,直接使用 Mac 的图形栈渲染,CPU 满速原生执行。 最终效果:安卓应用的体验、性能都如同原生 Mac App。

Intel Mac 不支持。

Mac.apk不是模拟器

一个 APK 里其实就三样东西:Java/Kotlin 代码、C/C++ 写的原生库、还有图片音频这些资源。Mac.apk 对三样分别下手。

代码部分,它翻译而不解释。 安卓的代码是 DEX 字节码,Mac.apk 第一次运行时把它转成标准 Java 字节码存下来,之后直接跑——跑在一个从 OpenJDK 编译出来的 JRE 上。转换器还单独开源了,叫 dex2jvm。

原生库部分,64 位的基本白捡。 M 芯片本身就是 64 位 ARM,游戏里那些 .so 拿过来原样执行,一个指令都不用翻。碰上老的 32 位 ARM 库,Apple Silicon 根本跑不了,它就提前整体重编译一遍再跑,结果也缓存着。

图形部分最见功夫。 安卓用 OpenGL ES 和 Vulkan 画图,Mac 只认 Metal。中间垫了 ANGLE 和 MoltenVK 两层,最后全都落到 Metal 上——所以是显卡真在画,不是软件硬凑。

安卓系统那层,是自己重写的。 Activity、View、布局、资源、通知、存储,这些它照着 AOSP 的行为重新实现了一遍;该找硬件的地方就转去问 macOS:窗口是 Mac 的窗口,剪贴板是 Mac 的剪贴板,定位来自系统定位服务,声音走 macOS,手柄走 macOS 的手柄框架。

这里有个容易误会的地方:它压根没跑 Linux 内核。 原生库要的 C 库和系统库,Mac.apk 用 macOS 自己的库垫了一层。所以不是"在 Mac 上偷偷开了个 Linux",是真的什么都没有。

还有个细节能说明作者是懂行的——安装包装好之后是苹果签名并公证过的,双击能正常打开,不用你去系统设置里点"仍要打开"。做 macOS 分发的都知道这一步有多麻烦。

安装Mac.apk

门槛先摆出来,不符合就别折腾了:

  • • 仅支持 Apple Silicon(M1/M2/M3/M4/M5)Mac,Intel Mac 完全不支持
  • • 系统最低 macOS 26.4(Tahoe),旧 macOS 不行
项目
要求
系统
macOS 26.4(Tahoe)或更高
,macOS 27 从 v1.0.1702 起支持
芯片
任意 Apple Silicon,Intel Mac 完全不支持
空间
本体约 280 MB,每个 App 额外占 APK 体积的 1.5~3 倍

装的过程本身不复杂:

  1. 1. 从 Releases 下磁盘映像,把 Mac.apk 拖进"应用程序"
  2. 2. 打开它,点左上角 Runtime 旁边的 Install
  3. 3. 进设置 → File types → Make Default,同意系统弹窗
  4. 4. 之后双击任意 .apk 就行,或者直接拖进窗口

格式支持得挺全:.apk、.apkm、.xapk、.apks、.apkx 都认。

但第一次启动会很难受。 大型 App 第一把可能黑屏等将近一分钟,因为它在给这个 App 做 DEX 转换。转过一次就好了,后面都是秒开。我一开始也以为卡死了,差点强制退出。

还有个存储位置的事得记住:App 的数据存在 ~/Library/Application Support/MacApk/<包名> 里,不在那个 .app 里面。所以你直接把图标拖进废纸篓,存档还在硬盘上躺着,白占地方。要清干净得回 Mac.apk 窗口点 Uninstall——顺便,它重装时能帮你把存档留住。

71 个 App 实测,58 个能用

README 里挂了一份手工测试的兼容性清单,10 月 20 号更新过。

71 个 App,58 个正常,10 个半残,3 个完全不行。

跑得挺像样的:

  • • Minecraft 1.26.52.3 —— 能启动能渲染,Xbox 账号能登,还连上了多人服务器
  • • Subway Surfers、Temple Run 2、Crossy Road、Fruit Ninja、Candy Crush、Among Us —— 都是开着就玩,音效正常
  • • Asphalt Legends —— 走 Vulkan 跑起来的,重力感应转向能识别
  • • Rocket League Sideswipe —— 接手柄、Epic 登录、在线对战都通,还能从 Epic 商店里直接装
  • • Telegram、Signal —— 通讯类里状态最好的两个
  • • F-Droid、Aurora Store —— 应用商店能浏览能装能更新,装和删会要 Touch ID
  • • RetroArch、Lemuroid —— 模拟器套模拟器,GBA 的《超级马力欧 Advance 2》实测能跑

还有个我没想到的:Epic Games Store 的安卓版能跑,登进去还真把 Rocket League 装上了。安装器套娃这种事,一般是兼容层最先崩的地方。

半残的:

  • • Duolingo —— 界面能开,但注册和登录都不行,等于没法用
  • • Instagram —— 排版乱,视频卡且没声音
  • • Reddit —— 谷歌登录不通,滚动很怪
  • • Mastodon —— 只显示一条嘟文
  • • AnkiDroid —— 能跑,部分页面有画面错乱
  • • NewPipe —— 有些视频只剩声音,一直在缓冲

完全不行的是 Efteling(卡在欢迎页)、Jetpack 2(加载到 59% 死住)、Gallery(权限没处理对)。

规律很明显:单机游戏和工具类最稳,需要谷歌账号体系、依赖复杂网页登录的社交 App 最容易翻车。

使用须知(请仔细阅读)

Mac.apk 直接将未修改的安卓 APK 以原生代码形式在 Mac 上运行。安装并使用本软件,即代表你同意以下条款:

  • • 你需要自行对所安装的安卓应用负责
  • • Voltare 无法审核、担保任何第三方 APK,不对非本项目开发的代码行为做任何保证
  • • Mac.apk 按现状提供,不附带任何明示或暗示的担保
  • • 对于使用本工具引发的损坏、数据丢失、恶意程序、安全事件、版权纠纷等一切后果,Voltare 不承担责任
  • • 部分 APK 会异常闪退、触发未知系统行为,这是跨平台运行软件的固有风险
  • • 你只能安装拥有合法使用权的 APK
  • • 在 Mac.apk 中运行的安卓应用,是以你的 macOS 用户权限直接运行原生代码,没有安卓手机那种独立沙盒隔离。请只安装来自可信来源、你信任的 APK。

如果你不同意以上内容,请勿安装 Mac.apk。

Mac.apk和模拟器、PlayCover 怎么选

Android Studio 模拟器 / MuMu / BlueStacks: 你要的是"完整安卓"。要 root、要 xposed、要连 adb 调东西、要模拟特定机型——老老实实上模拟器,Mac.apk 不是干这个的,Google Play 服务那层它只是实现了"大多数 App 用到的那部分"。

Mac.apk: 你要的是"把这几个安卓 App 当 Mac 软件用"。开一次、用一下、关掉,不关心底下是不是安卓。这种场景它赢得很干脆——没有整机启动开销,没有虚拟机的内存税。

PlayCover: 常被拿来比,但它俩方向相反。PlayCover 是让 iOS 应用(.ipa)跑在 Apple Silicon 上,Mac.apk 干的是安卓(.apk)那一侧。你手机是 iPhone,用 PlayCover;你平板是安卓、或者离不开某个只有安卓版的 App,看这个。

顺便,它开源是 AGPL-3.0,公司要商用可以买商业授权。个人用官方版本免费。

最后

这项目现在 3565 星、129 个 fork、63 个待处理 issue,从 5 月建仓到现在五个月。

它不是成熟产品,是一个每天都在变的实验。

但方向是对的。Mac 上一直缺这一块:iOS 侧有 PlayCover 补上了,安卓侧空了很久,以前只能靠拖一整个虚拟机进来解决。现在有人愿意照着 Wine 那套笨办法,一层一层把安卓的运行时在 macOS 上重新实现一遍——这事本身就挺硬的。

想试的话,直接从 GitHub 下最新版,先拿一个单机小游戏开刀,别一上来就装网银和社交。第一次黑屏等一分钟是正常的,别急着强退。

评论区聊聊:你 Mac 上最想跑起来的是哪个安卓 App?我先说我的——一个只有安卓版的智能家居客户端,还有那个永远不出 Mac 版的银行 App。

相关链接

  • • 项目主页(GitHub):https://github.com/kksimp/Mac.apk
  • • 下载(Releases,含历史版本):https://github.com/kksimp/Mac.apk/releases
  • • 兼容性清单:https://github.com/kksimp/Mac.apk/blob/main/COMPATIBILITY.md
  • • 原理说明(wiki):https://github.com/kksimp/Mac.apk/wiki/How-Mac.apk-Works

回首页,搜索你想要的文档

在首页搜索框输入关键词,快速定位资料

文库首页搜索指引 立即搜索

相关学习资料