在运行时删除框架公共头

时间:2014-04-02 06:29:05

标签: objective-c macos cocoa frameworks

我正在使用框架来开发Cocoa应用程序。该框架按预期在Versions / A / Headers路径中公开其公共头。

一旦我编译好的应用程序构建到位,我有什么办法可以隐藏/删除这个标题?这会影响我的应用程序运行时的任何功能或方法调用吗?

1 个答案:

答案 0 :(得分:2)

您可以在构建时使用“运行脚本”构建阶段删除框架标头。您需要在“复制框架”构建阶段之后创建一个新的“运行脚本构建阶段”。而这个新阶段应该执行像

这样的事情
FRAMEWORKS_DIR="${TARGET_BUILD_DIR}/${PRODUCT_NAME}.${WRAPPER_EXTENSION}/Contents/Frameworks"
FRAMEWORK_NAME="3rdParty.framework"

if [ -d "${FRAMEWORKS_DIR}/${FRAMEWORK_NAME}/Versions/A/Headers" ]; then
  rm    "${FRAMEWORKS_DIR}/${FRAMEWORK_NAME}/Versions/A/Headers/"*".h"
  rm -r "${FRAMEWORKS_DIR}/${FRAMEWORK_NAME}/Versions/A/Headers"
  rm    "${FRAMEWORKS_DIR}/${FRAMEWORK_NAME}/Headers"
fi

最后,应用目标构建阶段应该看起来像

enter image description here

屏幕截图还包含与问题命令无关的内容:

  • set -euo pipefail以便整个脚本在某些命令失败时失败;
  • set -x以便打印已执行的命令以构建日志。