firma en mac (compilaciones de depuración)
Esta app normalmente se compila desdescripts/package-mac-app.sh, que ahora:
- establece un identificador de paquete de depuración estable:
ai.openclaw.mac.debug - escribe el Info.plist con ese id de paquete (anule mediante
BUNDLE_ID=...) - llama a
scripts/codesign-mac-app.shpara firmar el binario principal y el paquete de la app, de modo que macOS trate cada recompilación como el mismo paquete firmado y conserve los permisos de TCC (notificaciones, accesibilidad, grabación de pantalla, micrófono, voz). Para permisos estables, use una identidad de firma real; la firma ad‑hoc es opcional y frágil (ver permisos de macOS). - usa
CODESIGN_TIMESTAMP=autode forma predeterminada; habilita marcas de tiempo confiables para firmas Developer ID. EstablezcaCODESIGN_TIMESTAMP=offpara omitir el sellado de tiempo (compilaciones de depuración sin conexión). - inyecta metadatos de compilación en Info.plist:
OpenClawBuildTimestamp(UTC) yOpenClawGitCommit(hash corto) para que el panel Acerca de muestre la compilación, git y el canal de depuración/lanzamiento. - El empaquetado requiere Node 22+: el script ejecuta compilaciones de TS y la compilación de la UI de Control.
- lee
SIGN_IDENTITYdel entorno. Agregueexport SIGN_IDENTITY="Apple Development: Your Name (TEAMID)"(o su certificado Developer ID Application) a su rc de shell para firmar siempre con su certificado. La firma ad‑hoc requiere una habilitación explícita medianteALLOW_ADHOC_SIGNING=1oSIGN_IDENTITY="-"(no recomendado para pruebas de permisos). - ejecuta una auditoría de Team ID después de firmar y falla si algún Mach‑O dentro del paquete de la app está firmado por un Team ID diferente. Establezca
SKIP_TEAM_ID_CHECK=1para omitirla.
Uso
Nota sobre firma ad‑hoc
Al firmar conSIGN_IDENTITY="-" (ad‑hoc), el script deshabilita automáticamente el Hardened Runtime (--options runtime). Esto es necesario para evitar fallos cuando la app intenta cargar frameworks integrados (como Sparkle) que no comparten el mismo Team ID. Las firmas ad‑hoc también rompen la persistencia de permisos de TCC; consulte permisos de macOS para los pasos de recuperación.
Metadatos de compilación para Acerca de
package-mac-app.sh estampa el paquete con:
OpenClawBuildTimestamp: ISO8601 UTC en el momento del empaquetadoOpenClawGitCommit: hash corto de git (ounknownsi no está disponible)
#if DEBUG). Ejecute el empaquetador para actualizar estos valores después de cambios en el código.
Por qué
Los permisos de TCC están vinculados al identificador del paquete y a la firma de código. Las compilaciones de depuración sin firmar con UUID cambiantes estaban haciendo que macOS olvidara las concesiones después de cada recompilación. Firmar los binarios (ad‑hoc de forma predeterminada) y mantener un id/ruta de paquete fijo (dist/OpenClaw.app) conserva las concesiones entre compilaciones, igualando el enfoque de VibeTunnel.