所以,我有shell script
生成两个JSON
文件。该脚本在build Phase
中以“Xcode
”运行。我希望能够以编程方式访问这些生成的文件,但在代码中却无法找到它们。
以下是生成文件的代码(我没有指定任何路径 - Script
位于项目的根目录中):
echo $booksJSON >> defaultBooks.json
echo $dateJSON >> defaultBooksDate.json`
然后我尝试从这样的代码中访问这些文件:
NSString *bookFilePath = [[NSBundle mainBundle] pathForResource:@"defaultBooks" ofType:@"json"];
NSString *dateFilePath = [[NSBundle mainBundle] pathForResource:@"defaultBooksDate" ofType:@"json"];
显然,我看不到'Copy Bundle Resources
'build phase
步骤中列出的这两个文件,因为它们是在编译时生成的,所以我假设这些文件根本没有复制到{ {1}}档案。
我缺少一步吗?如何告诉.ipa
在“Xcode
”步骤中添加JSON
个文件?
非常感谢
答案 0 :(得分:0)
您需要开始使用environment variables provided by Xcode。您也可以直接将JSON写入输出应用程序包中(除非您有特殊原因将它们生成为" source"并使用Xcode复制它们,那么?如果是,请参阅下文。)
所以我把这些脚本放到一个名为tools
的子目录中,如果这个脚本被称为generate_json.sh
,那么它的绝对路径就是$(PROJECT_DIR)/tools/generate_json.sh
。
在此sctipt文件中,您可以将Xcode输出目录(Xcode正在构建应用程序包)引用为$TARGET_BUILD_DIR
。
因此,像这样:
#!/bin/sh
cat << EOF > "$TARGET_BUILD_DIR/MyApp.app/somefile.json"
your json goes here.
EOF
.json
文件生成到源树中,并将其作为正确的源文件添加到Xcode,并安排将其以正常方式复制到应用程序包中。这通常仅在从另一个源文件(想想yacc
和lex
源文件)生成时才有用。如果它为每个构建更改,那么使用我在这里给出的方法。如果它永远不会改变那么你就不应该做任何这些事情,因为你可以在Xcode之外手动运行脚本。