如何在不关闭沙盒的前提下禁用macOS应用自动创建沙盒目录
关于macOS沙盒应用自动创建容器目录的说明
沙盒容器目录的创建时机早于应用main函数执行,属于系统加载沙盒应用时的内置逻辑,没有官方公开的配置项可以直接禁用该创建行为。
可行的处理方案
- 优先选择忽略空目录:
~/Library/Containers/<你的应用Bundle ID>和~/Library/Application Scripts/<你的应用Bundle ID>默认都是空目录,占用存储空间不足1KB,对系统和应用运行没有任何负面影响,完全可以保留,该方案完全合规,不会影响App Store审核。 - 启动后主动删除空目录:如果确实不希望保留冗余目录,可以在应用
didFinishLaunching回调中主动检测并删除这两个空目录。沙盒的安全限制是内核层面实现的,和这两个目录是否存在没有关联,删除后不会导致沙盒失效,也不会影响上架资格。 - 禁止使用函数Hook方案:不要尝试Hook系统的目录创建相关接口来拦截创建行为,这类操作会违反App Store审核规则,有极高概率被拒审,且跨系统版本兼容性极差,容易引发闪退。
补充:沙盒的权限管控逻辑不依赖容器目录的存在,只要你在Xcode中开启了沙盒配置,即使手动删除了容器目录,应用依然受到沙盒规则的保护,也满足App Store的上架要求。
内容的提问来源于stack exchange,提问作者CPlus
相关产品推荐
相关产品推荐

