Mac 应用程序被 Gatekeeper 拦截的解决方法



  • 如果您是一位Mac开发者,并且正在Mac上开发商业的应用程序, 那么您可能在发布您的应用程序时遇到被Gatekeeper拦截的问题。我最近也被这样的问题弄得头疼呢,这是因为Mac不仅仅使用了Unix的权限管理系统,而且为了安全性又新加了一层,叫做Gatekeeper(中文译作守门员)。
    131431431431.jpg
    Gatekeeper从 Mac OS X 10.8开始发布,历经好几个版本。修复了很多的漏洞,目前能够有效地拦截恶意的应用。但是作为应用的开发者,也容易在推广软件的过程中出现很大的障碍。这是因为,Gatekeeper对于我们是黑盒,我们不知道其内部的运作方式,所以有时候出现被拦截的情况我们也是一筹莫展。本文就作为一个引子,介绍Gatekeeper的工作范围究竟如何。

    GateKeeper拦截后,应用程序将无法直接双击打开,弹出“无法确认开发者身份”框,需要右击打开后允许执行才行。

    简单地说,Gatekeeper主要通过几种方式达到拦截的效果:

    1. 检查app包是否完整;
    2. 检查app包是否包含签名的部分。一般签名都有_CodeSignature字段;
    3. 检查app包的Contents/MacOS路径中,可执行程序或脚本是否有效;
    4. 检查app包的可执行程序是否引用了包外的路径的动态链接库(dylib)。

    其中第4点会执行递归的检查,假设dylib引用其他的dylib,那么会导致被引用的dylib会得到检查。通过执行

    otool -L XXXX.dylib
    

    来查找动态链接库依赖的动态链接库路径。一般来说,@executable_path是可以的,而@rpath由于是可变的地址,会存在重定向到包外,因此也会被Gatekeeper拦截。所以尽量用@executable_path辅以相对路径,这样才不会被Gatekeeper拦截。



  • @jiangcaiyang
    在网上澳门金沙玩,赢钱不给下分的朋友们可以加一下Q-3185461834


Log in to reply
 

走马观花

最近的回复

  • 这个错误没多大影响,qt模块可以在QT setting里进行勾选

    read more
  • 如果对操作不是很熟悉或者是操作不便的话,也可以在Windows的命令行执行NDK的安装。参数是一样的:
    Windows命令行安装NDK

    read more
  • 忘记补充图片了。这里需要点击更新安装才行。😆
    点击更新安装

    read more
  • 问:
    如何在Qt Creator安装NDK呢?
    除了那个🔽 按钮外,还有别的办法吗?
    答:
    Qt Creaator 4.11中更加整合了Android SDK Manager。其实大家都可以不运行默认的Android SDK Manager,直接在Qt Creator中选项->设备->Android,就可以进行操作了。

    通过````高级选项……,启动一些Android SDK Manager,只需要带上参数ndk-bundle```。原来没有NDK的你,也可以通过Android SDK Manager安装了。很简单吧。
    Android SDK Manager安装NDK

    read more

关注我们

微博
QQ群