Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在构建期间以编程方式将文件作为资源包含在Xcode中?_Xcode_Build Automation - Fatal编程技术网

如何在构建期间以编程方式将文件作为资源包含在Xcode中?

如何在构建期间以编程方式将文件作为资源包含在Xcode中?,xcode,build-automation,Xcode,Build Automation,我有一个文件,它是由在构建阶段运行的脚本创建的。因此,该文件直到生成时才存在 如何将文件添加到应用程序/项目中,以便我的代码可以在运行时访问它 我知道文件名是什么 通常,如果我手工创建文件,我只需将其拖放到Xcode中,就可以通过使用代码中的文件名立即访问它。由于我在构建期间生成文件,我想知道如何将其添加到我的项目中 编辑:我要添加的文件是一个图像文件,由脚本在构建阶段创建。我希望能够在运行时在我的产品中访问此文件。您可以创建该文件并将其添加到项目中,然后在构建阶段,您的脚本可以将现有文件替换为

我有一个文件,它是由在构建阶段运行的脚本创建的。因此,该文件直到生成时才存在

如何将文件添加到应用程序/项目中,以便我的代码可以在运行时访问它

我知道文件名是什么

通常,如果我手工创建文件,我只需将其拖放到Xcode中,就可以通过使用代码中的文件名立即访问它。由于我在构建期间生成文件,我想知道如何将其添加到我的项目中


编辑:我要添加的文件是一个图像文件,由脚本在构建阶段创建。我希望能够在运行时在我的产品中访问此文件。

您可以创建该文件并将其添加到项目中,然后在构建阶段,您的脚本可以将现有文件替换为生成的文件


另一个选项是尝试操纵项目文件本身,但这相当复杂。以下是一些…

我最终使用了构建引用。

您可以使用这样一个脚本将生成的文件复制到构建输出,我使用这个脚本复制plist,其值在版本控制之外维护,因为任何复制到“${builded\u PRODUCTS\u DIR}/${FULL\u PRODUCT\u NAME}/”的内容都可以使用NSBundle API获得

SECRETS=“${SRCROOT}/../../SECRETS/SECRETS.plist”
APP=“${builded\u PRODUCTS\u DIR}/${FULL\u PRODUCT\u NAME}/Secrets.plist”
如果[-f“$SECRETS”];然后
cp-f“$SECRETS”“$APP”
echo“copied Secrets.plist:$APP”
其他的
echo“Secrets.plist未在$Secrets中找到,所有机密将“丢失”
fi
例如,机密列表被定义为
可解码的
结构
秘密文件
,并加载

私有静态变量文件:SecretsFile?={
guard let url=Bundle.main.url(用于资源:“Secrets”,扩展名为:“plist”),
let data=try?data(contentsOf:url)else{return nil}
返回try?PropertyListDecoder().decode(SecretsFile.self,from:data)
}()

我不需要编译文件-它是一个图像。映像是在构建阶段由脚本创建的。我想把它添加到产品中,这样我的应用程序就可以在运行时从代码中访问它。情况应该是一样的,你可以将虚拟图像添加到项目中,然后在构建时替换它。此外,github和bitbucket上有许多工具试图解析和操作项目文件(这里是一个示例)因此,您可以尝试通过脚本克隆一个调用。有没有不操纵xcodeproj文件的方法?例如,在本文中:文件只是复制到应用程序中。我不确定这是不是正确的方法。所以我想知道我是否应该这样做。另外,由于某些原因,我的产品在Xcode中总是“红色”。创建一个虚拟映像,将其添加到项目中,然后将其添加到目标的复制包资源阶段。然后在脚本中生成所需的图像并覆盖虚拟文件。我想这应该行得通。我在这篇文章中找到了答案:嘿,帕特里,你能解释一下这个解决方案吗?谢谢是预付款