dev.to | 📄 原文链接 | 2026-10-23 收录

不上交 99 美元,也能把 Mac 应用发出去

来源:dev.to — 2026-10-21

📋 概述

作者在做 Kopi,一个用 Rust 加 Tauri 2 加 React 写的开源剪贴板管理器,还在 alpha。这篇文章讲一个比任何功能都想得久的决定:怎么在不给苹果交每年 99 美元的前提下把 Mac 应用发出去。问题是 macOS 只对用 Apple Developer ID 签名并通过公证的应用免除 Gatekeeper 警告,而那张证书要先加入开发者计划。他最初的想法是干脆 ad-hoc 签名、让用户点过警告就行,但这在 Kopi 上立刻崩掉:剪贴板管理器需要辅助功能权限(才能往当前应用里粘贴)和剪贴板访问权限(才能看到你复制了什么),而 macOS 不按应用名记住这些授权,它绑在代码签名里的 designated requirement 上。ad-hoc 签名的要求里包含构建自身的哈希,于是每个新构建在系统眼里都是另一个应用,测试者每次更新都要重新授权。解法是自签一张永不变的代码签名证书:要求变成 bundle id 加证书叶子哈希,两者跨版本不变,系统就认得出这是同一个应用。

🔑 核心要点

💡 金句

macOS doesn't remember these grants by app name.
译:macOS 并不按应用名来记住这些授权。
← 返回 dev.to 首页