运行 脚本阶段出错:框架是一个目录

Error in run script phase: framework is a directory

我正在使用我使用 Carthage 安装的 GraphQL 的 apollo 框架,但是当我 运行 在构建阶段生成 API.swift 文件的脚本时出现错误。

错误是

> [myproject]/Carthage/Build/iOS/Apollo.framework: is a directory
  Command /bin/sh failed with exit code 126

我确实添加了 apollo doc 中的脚本:

这是脚本本身:

APOLLO_FRAMEWORK_PATH="$(eval find $FRAMEWORK_SEARCH_PATHS -name "Apollo.framework" -maxdepth 1)"

if [ -z "$APOLLO_FRAMEWORK_PATH" ]; then
echo "error: Couldn't find Apollo.framework in FRAMEWORK_SEARCH_PATHS; make sure to add the framework to your project."
exit 1
fi

cd "${SRCROOT}/${TARGET_NAME}"
$APOLLO_FRAMEWORK_PATH/check-and-run-apollo-codegen.sh generate $(find . -name '*.graphql') --schema schema.json --output API.swift

当然我也预先生成了schema.json

可能回答有点晚,但至少在我的机器上 APOLLO_FRAMEWORK_PATH 被评估为两个框架(iOS 和 watchOS),因此 运行 捆绑脚本与 $APOLLO_FRAMEWORK_PATH/check-and-run-apollo-codegen.sh 失败。

假设脚本没有区别(从 apollo-ios@0.8.0 版本开始它们没有区别)您可以将 -print -quit 添加到 find 命令的末尾以使其仅 return一个结果。

完整脚本为:

APOLLO_FRAMEWORK_PATH="$(eval find $FRAMEWORK_SEARCH_PATHS -name "Apollo.framework" -maxdepth 1 -print -quit)"

if [ -z "$APOLLO_FRAMEWORK_PATH" ]; then
echo "error: Couldn't find Apollo.framework in FRAMEWORK_SEARCH_PATHS; make sure to add the framework to your project."
exit 1
fi

cd "${SRCROOT}/${TARGET_NAME}"
$APOLLO_FRAMEWORK_PATH/check-and-run-apollo-codegen.sh generate $(find . -name '*.graphql') --schema schema.json --output API.swift