Mac打包遇到的小问题

1.最近在Mac平台上打包签名app时,发现公证一直过不去,一直在报 the signature of the binary is invalid的错误,打包过程是通过自己编写的脚本来顺序执行的。以前都工作正常,但最近却一直报错,回想了一下最近的操作,主要修改是将程序依赖的框架拷贝到bundle的Frameworks中等操作。

    这里主要使用了cp -r ./Frameworks ./nortarize/Exam_Client.app/Contents/ 来完成Frameworks的拷贝。

检查了一些通过命令行拷贝过去的Frameworks中的库,发现目录中原有的symlink类型的文件全都变成了实体文件,这就是导致一直签名失败的原因。

解决办法:

  cp 命令有一个 -a 参数,能够保证拷贝symlink类型文件时,不会转换成实体文件,故修改上述脚本命令即可修复。

2..DS_Store隐藏文件导致已被公证的app不能被正确运行

  删除某些文件夹下的.DS_Store文件,具体可以使用 ll -a 命令来查看当前目录是否存在.DS_Store文件,然后使用rm -rf .DS_Store来删除。

3.如果签名,公证过程完全都正确,但是当从网络下载下来dmg文件无法通过gatekeeper时,很有可能是因为你使用了第三方的dylib造成的。

  如果dylib的LC_RPATH是一个外部的地址,则需要注意删掉它。

  如何查看dylib呢?使用otool -l XXX.dylib来查看lib的信息,其中可能会有LC_RPATH,检查该值是否是一个别的开发机上的路径,如果是则删掉它。

  如何删除呢? 使用install_name_tool  --delete-rpath /rpath/value XXX.dylib ,即可删除。

posted @ 2021-05-25 15:17  chyshx  阅读(606)  评论(0编辑  收藏  举报