一、現象描述
在macOS上搞開發也有一段時間了,也積攢了一定的經驗。然而,今天在替換工程中的一個動態庫時還是碰到了一個問題。原來工程中用的是一個靜態庫,調試時發現有問題就把它替換成了動態庫。這本來沒什么值得一說,可工程編譯完后打包測試時發現,不論怎么搞程序都加載不起來。毫無疑問,這是新替換的動態庫帶來的問題。
二、解決辦法
於是嘗試打開日志文件看看有什么發現吧:

根據上面的日志文件提示,動態庫加載的時候失敗了。原因為:code signature invalid。這就奇了個怪了,以前都沒碰到類似的問題啊。而且這個動態庫還是從其他工程中拷貝過來的,從來沒有發現問題啊。既然提示簽名失效,那先使用命令看看簽名狀態再說:

可以看到,libexpat.1.dylib這個文件的簽名確實是失效了。可能是被修改了或者其他原因而導致的。而libexiv2.14.dylib這個文件則沒有簽名。既然動態庫的代碼簽名是無效的,那么我們就有了一個大膽的想法,嘗試給動態庫重新簽名好了:

所有相關的依賴庫都簽好名,重新打包測試,問題果然消失了。不過,為啥在另外一個工程里面使用時完美運行,在這個工程里面時卻報代碼簽名失效,這點倒是沒有想通。
三、參考鏈接
1. https://forum.unity3d.com/threads/invalid-signature-for-submitted-mac-app.120263/
