macOS companion app
Firma de macOS
firma en macOS (compilaciones de depuración)
scripts/package-mac-app.sh compila y empaqueta la aplicación en una ruta fija (dist/OpenClaw.app) y, a continuación, llama a scripts/codesign-mac-app.sh para firmarla. Los permisos de TCC están vinculados al ID del paquete y a la firma de código; mantener ambos estables (y la aplicación en una ruta fija) entre recompilaciones evita que macOS olvide las concesiones de TCC (notificaciones, accesibilidad, grabación de pantalla, micrófono y reconocimiento de voz).
- El identificador del paquete de depuración es, de forma predeterminada,
ai.openclaw.mac.debug(se puede sustituir conBUNDLE_ID=...). - Node:
>=22.22.3 <23,>=24.15.0 <25o>=25.9.0(package.jsondel repositorio:engines). El empaquetador también compila la interfaz de control (pnpm ui:build). - De forma predeterminada, requiere una identidad de firma real; el script de firma de código termina con un error si no se encuentra ninguna y
ALLOW_ADHOC_SIGNINGno está definido. La firma ad hoc (SIGN_IDENTITY="-") requiere una activación explícita y no conserva los permisos de TCC entre recompilaciones. Consulte Permisos de macOS. - Lee
SIGN_IDENTITYdel entorno (por ejemplo,export SIGN_IDENTITY="Apple Development: Your Name (TEAMID)"o un certificado Developer ID Application). Si no se proporciona,codesign-mac-app.shselecciona automáticamente una identidad en este orden: Developer ID Application, Apple Distribution, Apple Development y, por último, la primera identidad válida de firma de código que encuentre. CODESIGN_TIMESTAMP=auto(valor predeterminado) habilita las marcas de tiempo de confianza únicamente para las firmas Developer ID Application. Definaon/offpara forzar cualquiera de las dos opciones.- Añade a Info.plist
OpenClawBuildTimestamp(ISO8601 UTC) yOpenClawGitCommit(hash corto,unknownsi no está disponible) para que la pestaña Acerca de pueda mostrar la compilación, la información de Git y el canal de depuración o publicación. - Ejecuta una auditoría del ID de equipo después de firmar y falla si algún archivo Mach-O del paquete tiene un ID de equipo diferente. Defina
SKIP_TEAM_ID_CHECK=1para omitirla.
Uso
# desde la raíz del repositorioscripts/package-mac-app.sh # selecciona automáticamente la identidad; genera un error si no encuentra ningunaSIGN_IDENTITY="Developer ID Application: Your Name" scripts/package-mac-app.sh # certificado realALLOW_ADHOC_SIGNING=1 scripts/package-mac-app.sh # ad hoc (los permisos no se conservarán)SIGN_IDENTITY="-" scripts/package-mac-app.sh # ad hoc explícita (con la misma salvedad)DISABLE_LIBRARY_VALIDATION=1 scripts/package-mac-app.sh # solución provisional solo para desarrollo ante una discrepancia del ID de equipo de SparkleNota sobre la firma ad hoc
SIGN_IDENTITY="-" deshabilita el entorno de ejecución reforzado (--options runtime) para evitar fallos cuando la aplicación carga frameworks integrados (como Sparkle) que no comparten el mismo ID de equipo. Las firmas ad hoc también impiden conservar los permisos de TCC; consulte Permisos de macOS para conocer los pasos de recuperación.
Metadatos de compilación para Acerca de
La pestaña Acerca de lee OpenClawBuildTimestamp y OpenClawGitCommit de Info.plist para mostrar la versión, la fecha de compilación, el commit de Git y si la compilación es DEBUG (mediante #if DEBUG). Vuelva a ejecutar el empaquetador después de modificar el código para actualizar estos valores.