我有一个iOS应用程序,其中“框架A”作为子项目并将其作为目标依赖项包含在内。“框架A”具有“框架B”具有子项目,并将其包含为目标依赖项。最后,“框架B”具有“框架C”作为子项目,并将其包含为目标依赖项。
该项目可以很好地运行,并且可以在Simulator中完美运行,但是由于错误而立即崩溃dyld: Library not loaded: @rpath/Framework A.framework/Framework A
。
问题是“ Framework A.framework”文件没有自动复制到应用程序的可执行文件中。您可以将“复制文件”构建阶段添加到您的应用目标,并指定“框架A.framework”应嵌入到可执行文件中,但此解决方案无法扩展。您仍然缺少“框架B.framework”和“框架C.framework”。
例如,假设您有一个复杂的依赖关系结构,如问题中所描述的那样,链接具有公共静态库的静态库的正确过程是什么?。您将必须手动将六个框架嵌入到可执行文件中,如果根框架添加了更多依赖项,则该项目将不再构建。您必须记住手动嵌入任何新的依赖项。
那么,有谁知道Xcode是否有一种方法可以自动嵌入您的目标依赖框架(就像静态库一样),或者Apple为什么不这样做呢?尤其是对于iOS,将Xcode构建框架添加到构建目录似乎毫无意义,然后对它们完全不执行任何操作。
我找不到任何让Xcode自动执行此操作的方法。最后,我更新了编写的脚本,并在后期构建阶段添加了该脚本
frameworksDirectory=${CONFIGURATION_BUILD_DIR}/${CONTENTS_FOLDER_PATH}/Frameworks
mkdir -p "${frameworksDirectory}"
for framework in "${CONFIGURATION_BUILD_DIR}"/*.framework
do
if [ -d "${framework}" ]; then
cp -r "${framework}" "${frameworksDirectory}"
fi
done
for framework in "${CONFIGURATION_BUILD_DIR}/../Release${EFFECTIVE_PLATFORM_NAME}"/*.framework
do
if [ -d "${framework}" ]; then
cp -r "${framework}" "${frameworksDirectory}"
fi
done
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句