Madeira 内存权限配置完全指南:免费给 iPhone 注入 increased-memory-limit 防止游戏被杀
【免费下载链接】MadeiraRun x86-64 Windows PC games on jailed iOS via FEX-Emu + Wine + DXMT项目地址: https://gitcode.com/GitHub_Trending/mad/Madeira
Madeira 是一个基于 FEX-Emu + Wine + DXMT 的技术方案,让 x86-64 Windows PC 游戏直接运行在未经越狱的 iPhone 上。本文解决的是它落地时最实际的一道坎:iOS 的 Jetsam 机制会在内存吃紧时直接杀掉吃内存的进程,而 Madeira 恰好是个内存大户。跟着本文操作,你可以在 10 分钟内用免费 Apple ID 为它配上increased-memory-limit内核权限,并学会三种验证手段,从此不再担心一局游戏打到一半突然闪退。
先搞懂:iPhone 为什么会杀掉 PC 游戏
iOS 里有一套叫Jetsam的内存保护策略:单个应用占用的物理内存一旦越过阈值,系统不协商、不提示,直接终止进程。普通 App 的阈值并不高,但 Madeira 需要在手机上同时撑起三层开销——
- FEX-Emu 负责把 x86/x86-64 指令实时翻译成 ARM 指令
- Wine 把 Win32 API 调用翻译成 iOS 系统调用
- DXMT 把 DirectX 调用实时转成 Metal 绘制
一个像样的 PC 游戏动辄吃 4GB 以上内存,裸奔状态下的 Madeira 离被杀只差一次大型地图加载。解法不是优化,而是申请内核级权限把阈值抬上去。
Madeira 源码里声明了两个与内存相关的内核 entitlement,它们常被混为一谈,但含义完全不同:
| Entitlement 名称 | 管什么 | 免费账号能否拿到 |
|---|---|---|
com.apple.developer.kernel.increased-memory-limit | 提高 Jetsam 判定的物理内存上限——允许你真实占用更多内存 | 可以,本文主角 |
com.apple.developer.kernel.extended-virtual-addressing | 扩大虚拟地址空间——按 app/Madeira/EntitlementChecker.swift 中的说明,未授予时用户态地址图止于 63GB,授予后扩展到 512GB | 不行,免费账号无法配置,需要付费开发者账号 |
一句话区分:前者决定系统肯分给你多少真内存,后者决定进程能映射多大的地址范围。跑中小体量的游戏,把前者搞到位就够用了。
项目自带的权限声明文件是 app/Madeira/Madeira.entitlements,其中increased-memory-limit已经写死为true。但"声明了"不等于"系统真给了"——最终是否生效,取决于你安装时所用描述文件(provisioning profile)里有没有这一项。这就是为什么侧载之后往往还需要再做一步注入,下面展开。
GetMoreRam 注入:原理与操作
它到底改了什么
GetMoreRam 是一个同样走侧载渠道安装的小工具。它做的事情很单一:用你的 Apple ID 调 Apple 开发者门户的接口,把 "Increased Memory Limit" 能力写进你名下已注册 App ID 的配置里。
关键在于这条链路的顺序:
- 侧载工具(如 SideStore、AltStore)首次安装 App 时,会在你的 Apple 开发者账号下自动注册一个 App ID;
- GetMoreRam 修改的正是这个 App ID 的能力列表——改的是门户里的持久配置,不是手机上的 App;
- 下次你重新安装时,侧载工具会向 Apple 服务器申请新的描述文件,新文件里自然带上了这个能力;
- App 二进制的 entitlements 与新描述文件匹配,内核据此正式放行。
所以"注入"是一次性动作,真正让权限落地的是重装那一刻拉取的新描述文件。
操作清单(全程约 10 分钟)
Madeira 应用内的 Setup Guide(app/Madeira/ContentView.swift 中的SetupGuideView)给出的官方顺序就是:装 Madeira → 装 GetMoreRam 注入 → 用同一 IPA 重装。具体拆开:
- 1. 侧载安装 Madeira。用 SideStore、AltStore 等工具装好,并记下用的是哪个 Apple ID——后续每一步都绑死这个账号。
- 2. 安装 GetMoreRam。获取它的 Entitlement IPA,用同一个侧载工具、同一个 Apple ID、同一台设备装好。
- 3. 在 GetMoreRam 中登录。进入 Settings,登录侧载 Madeira 时用的那个 Apple ID。
- 4. 找到 Madeira 的 App ID。打开 App IDs 页面,点 Refresh 刷新列表,找到 Madeira 对应的条目。它的 bundle ID 是
com.madeira.emulator,可在 app/source.json 中核对。 - 5. 添加能力。选中该 App ID,添加Increased Memory Limit;账号条件允许的话,可顺带尝试Extended Virtual Addressing(免费账号大概率失败,属正常现象)。
- 6. 卸载并重装 Madeira。用同一个 IPA走一遍侧载。重装是权限生效的扳机,跳过这步前面全白做。
⚠️ 最常见的失败点:第 3 步登录了和侧载不同的 Apple ID。App ID 是挂在账号名下的,账号对不上,列表里就找不到 Madeira,注入无从谈起。
🔁 免费账号的描述文件有效期是 7 天。每周常规重装时,新描述文件会自动继承 App ID 上的能力配置,一般无需重新注入;只有当你换了 Apple ID 或换了设备,才需要从头再走一遍上面的清单。
权限是否生效:三种验证方式
Madeira 内置了运行时自检,不需要借助任何第三方工具。
方式一:看主界面徽章。启动后界面上有三个权限徽章,绿色对勾表示已授予,橙色叉号表示未授予,对应allow-jit、increased-memory-limit、extended-virtual-addressing三项。徽章的渲染逻辑在 app/Madeira/ContentView.swift 的entitlementBadge里。
方式二:看启动日志。应用每次启动都会调用logEntitlementStatus()(同文件)打印权限状态,格式大致如下:
Checking entitlements... allow-jit: true increased-memory-limit: true extended-virtual-addressing: false Tip: Use GetMoreRam to add increased-memory-limitincreased-memory-limit: true即注入成功。日志里出现那条 Tip,说明这一项还没拿到,回操作清单第 3、6 步复查。
方式三:对照 Setup Guide。应用内的 Setup Guide 页面对每项要求都有说明,其中 Increased Memory Limit 一栏的原文是:"Raises the Jetsam memory threshold. Included in the app entitlements. If not detected, use GetMoreRam to inject it."——与本文流程完全一致。
底层检测走的是 app/Madeira/EntitlementChecker.swift 里的SecTaskCopyValueForEntitlement:系统按当前进程的真实签名与描述文件作答,所以徽章状态是可信的,不会被 App 自己"骗"过去。
徽章是橙色?一张表速查常见故障
| 现象 | 原因 | 处理 |
|---|---|---|
increased-memory-limit一直是橙色叉 | GetMoreRam 登录的账号与侧载账号不一致;App ID 选错条目;添加能力后没有重装 | 按操作清单逐条对照,重点查账号一致性与"是否重装过" |
| GetMoreRam 用不了了 | 这类工具依赖的接口偶有变动 | 架构文档提到的备选是PlumeImpactor;或者保持 StikDebug 连接,用其process_control_disable_memory_limit在运行时绕过限额(需 StikDebug 全程挂着) |
extended-virtual-addressing加不上 | 该能力免费账号无法配置,GetMoreRam 也不保证能注 | 正常现象。想跑超大型游戏且必须依赖它,考虑付费开发者账号或放弃该选项 |
| 权限已生效,游戏仍偶发被杀 | Jetsam 在系统内存压力极高时依然可能出手——iPhone 总共 6~8GB 内存还要供系统和后台 App | 不是权限问题。降分辨率、降画质,或关闭后台占用大的 App |
最后一点值得强调:increased-memory-limit是把阈值抬高,不是取消限额。PC 游戏可申请的内存上限(4-8GB+)依然可能逼近手机物理内存的天花板,阈值再高也架不住总量不够。把画质调到设备吃得消的范围,才是长期稳定的关键。
小结与参考资料
整条路径可以浓缩为一句话:侧载安装 → GetMoreRam 修改 App ID 能力 → 同一 IPA 重装 → 应用内徽章/日志验证。一次配好,长期有效,免费账号全程够用。
| 参考文件 | 内容 |
|---|---|
| app/Madeira/Madeira.entitlements | 应用的 entitlement 声明清单 |
| app/source.json | App ID(com.madeira.emulator)与权限配置 |
| app/Madeira/EntitlementChecker.swift | 运行时权限检测实现 |
| app/Madeira/ContentView.swift | 权限徽章、启动日志与 Setup Guide 文案 |
| docs/BUILDING.md | 构建文档,含签名与 Apple ID 要求说明 |
【免费下载链接】MadeiraRun x86-64 Windows PC games on jailed iOS via FEX-Emu + Wine + DXMT项目地址: https://gitcode.com/GitHub_Trending/mad/Madeira
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考