我有一个由在构建阶段运行的脚本创建的文件。因此,该文件在构建时间之前不存在。
如何将文件添加到app / project以便我的代码可以在运行时访问它?
我知道文件名是什么。
通常情况下,如果我手动创建文件,我只需将其拖放到Xcode中,然后我就可以使用代码中的文件名立即访问它。由于我在构建期间生成文件,因此我想知道如何将其添加到项目中。
编辑:我添加的文件是一个图像文件,它是在构建阶段由脚本创建的。我希望能够在我的产品中运行时访问此文件。
答案 0 :(得分:2)
我最终使用了构建引用。
答案 1 :(得分:1)
您可以创建文件并将其添加到项目中,然后在构建阶段,您的脚本可以用生成的文件替换现有文件....
另一个选择是尝试操作项目文件本身,但这非常复杂。这里有一些resources on the subject ...
答案 2 :(得分:0)
您可以使用这样的脚本将生成的文件复制到构建输出中,因为我可以使用该脚本复制具有在版本控制之外保留的值的plist,因为任何复制到“ $ {BUILT_PRODUCTS_DIR} / $ {FULL_PRODUCT_NAME} /”的文件都可用使用NSBundle API。
SECRETS="${SRCROOT}/../../secrets/Secrets.plist"
APP="${BUILT_PRODUCTS_DIR}/${FULL_PRODUCT_NAME}/Secrets.plist"
if [ -f "$SECRETS" ]; then
cp -f "$SECRETS" "$APP"
echo "copied Secrets.plist: $APP"
else
echo "Secrets.plist not found at $SECRETS, all secrets will be 'MISSING'"
fi
例如,该秘密plist定义为Decodable
结构SecretsFile
并加载了
private static var file: SecretsFile? = {
guard let url = Bundle.main.url(forResource: "Secrets", withExtension: "plist"),
let data = try? Data(contentsOf: url) else { return nil }
return try? PropertyListDecoder().decode(SecretsFile.self, from: data)
}()