【Mac开发】Mac 应用 Archive 成功后无法打开?

发布于:2025-07-09 ⋅ 阅读:(30) ⋅ 点赞:(0)

在这里插入图片描述

先查看log文件

终端运行

/path/to/YourApp/Contents/MacOS/appname

以我的app举例,出现报错:

dyld[80346]: Library not loaded: @rpath/libwhisper.1.7.6.dylib
  Referenced from: <76FBC0BE-06FD-39A0-88A6-E494552B4136> /Applications/WhisperTranscriberV1/WhisperTranscriber.app/Contents/MacOS/WhisperTranscriber
  Reason: tried: '/Applications/WhisperTranscriberV1/WhisperTranscriber.app/Contents/Frameworks/libwhisper.1.7.6.dylib' (code signature in <5EF42270-5D9E-37A2-970D-F783C5EB66BE> '/Applications/WhisperTranscriberV1/WhisperTranscriber.app/Contents/Frameworks/libwhisper.1.7.6.dylib' not valid for use in process: mapping process and mapped file (non-platform) have different Team IDs), '/Applications/WhisperTranscriberV1/WhisperTranscriber.app/Contents/MacOS/../Frameworks/libwhisper.1.7.6.dylib' (code signature in <5EF42270-5D9E-37A2-970D-F783C5EB66BE> '/Applications/WhisperTranscriberV1/WhisperTranscriber.app/Contents/Frameworks/libwhisper.1.7.6.dylib' not valid for use in process: mapping process and mapped file (non-platform) have different Team IDs), '/Users/jyh/MyData/audio2text/WhisperTranscriber/WhisperTranscriber/Libraries/libwhisper.1.7.6.dylib' (code signature in <5EF42270-5D9E-37A2-970D-F783C5EB66BE> '/Users/jyh/MyData/audio2text/WhisperTranscriber/WhisperTranscriber/Libraries/libwhisper.1.7.6.dylib' not valid for use in process: mapping process and mapped file (non-platform) have different Team IDs), '/System/Volumes/Preboot/Cryptexes/OS/Users/jyh/MyData/audio2text/WhisperTranscriber/WhisperTranscriber/Libraries/libwhisper.1.7.6.dylib' (no such file), '/Applications/WhisperTranscriberV1/WhisperTranscriber.app/Contents/Frameworks/libwhisper.1.7.6.dylib' (code signature in <5EF42270-5D9E-37A2-970D-F783C5EB66BE> '/Applications/WhisperTranscriberV1/WhisperTranscriber.app/Contents/Frameworks/libwhisper.1.7.6.dylib' not valid for use in process: mapping process and mapped file (non-platform) have different Team IDs), '/Applications/WhisperTranscriberV1/WhisperTranscriber.app/Contents/MacOS/../Frameworks/libwhisper.1.7.6.dylib' (code signature in <5EF42270-5D9E-37A2-970D-F783C5EB66BE> '/Applications/WhisperTranscriberV1/WhisperTranscriber.app/Contents/Frameworks/libwhisper.1.7.6.dylib' not valid for use in process: mapping process and mapped file (non-platform) have different Team IDs), '/Users/jyh/MyData/audio2text/WhisperTranscriber/WhisperTranscriber/Libraries/libwhisper.1.7.6.dylib' (code signature in <5EF42270-5D9E-37A2-970D-F783C5EB66BE> '/Users/jyh/MyData/audio2text/WhisperTranscriber/WhisperTranscriber/Libraries/libwhisper.1.7.6.dylib' not valid for use in process: mapping process and mapped file (non-platform) have different Team IDs), '/System/Volumes/Preboot/Cryptexes/OS/Users/jyh/MyData/audio2text/WhisperTranscriber/WhisperTranscriber/Libraries/libwhisper.1.7.6.dylib' (no such file)

App 无法打开的确切原因是:

❌ 系统拒绝加载 libwhisper.1.7.6.dylib,因为签名无效

… not valid for use in process: mapping process and mapped file (non-platform) have different Team IDs

这句话的意思是:App 主程序和动态库的签名不一致,即使你没用 Apple Developer 账号签名,macOS 仍然强制它们要一致。

✅ 解决方案:移除 libwhisper.1.7.6.dylib 的签名并统一签名整个 App

你现在需要:

✅ 步骤 1:去掉 dylib 上的签名

codesign --remove-signature “/Applications/WhisperTranscriberV1/WhisperTranscriber.app/Contents/Frameworks/libwhisper.1.7.6.dylib”

对其他 .dylib 文件也执行这个命令,例如:

codesign --remove-signature “/Applications/WhisperTranscriberV1/WhisperTranscriber.app/Contents/Frameworks/libggml.dylib”

你可以写一个循环:

cd /Applications/WhisperTranscriberV1/WhisperTranscriber.app/Contents/Frameworks
for f in *.dylib; do
sudo codesign --remove-signature “$f”
done

✅ 步骤 2:用 ad-hoc 签名整个 App

codesign --force --deep --sign - “/Applications/WhisperTranscriberV1/WhisperTranscriber.app”

这个 - 是 ad-hoc 签名,不需要 Apple 账号,它只是为了让系统允许这些文件一起运行。

✅ 步骤 3:再次运行 App

open /Applications/WhisperTranscriberV1/WhisperTranscriber.app

这时你就不应该再遇到 Team ID 不一致的问题了。

💡 延伸说明:为什么发生这个问题?
• 有些 .dylib 被你系统默认签名(比如 clang 编译时自动带的)
• App 本体未签名或签名方式不同
• 在运行时 macOS 会校验这些模块是否“属于同一个开发者”

这就是看到的 not valid for use in process 错误。