实际上基于配置,我想删除并在Info.plist中添加一个键。使它动态。我已采用添加脚本的方法来完成此任务。
我尝试过的和遇到的问题在这里。
添加了构建脚本:使用编辑器->添加构建阶段->添加运行脚本添加了脚本。
输出:我可以看到Xcode文件中的密钥已删除,但是当我要在iPA中看到密钥时,密钥仍然存在。因此,我相信Build系统已在删除密钥之前复制了该文件。看起来像执行脚本顺序的问题。
行动前构建方案看起来很有希望。
问题:我在预动作脚本中添加了简单的echo语句。但是我看不到它的输出。关于堆栈溢出的几个问题,我发现我们可以在console.app上看到它。但是我尝试了很多,但是在Console.app中看不到它。我正在使用Xcode 5.1.1。
任何人都可以指出我在哪里可以看到我的行动前脚本的输出?
外部构建系统:我也尝试过此Running script only for an 'Archive' build in Xcode 4
上面链接提供的解决方案中的问题:
最佳答案
最好使用外部构建系统模板创建一个新目标(并使其运行脚本),然后使应用程序/库/任何目标都依赖于此新目标。
这样,它将在Xcode甚至未触及Info.plist
之前运行,并且曾经存在Xcode问题(如果我没记错,在4.2中),运行时在构建阶段修改Info.plist
的脚本会使它崩溃。
我使用这种方法通过TexturePacker命令行构建Spritesheets,并使用python脚本修改构建编号。
编辑这是要使用的设置的示例,假设脚本位于Xcode项目的同级目录中的名为tools
(我的首选位置)的目录中,因此:
MyProject/
MyProject.xcodeproj/
MyProject/
(source files)
MyProject-Info.plist
tools/
the_script.sh (see below)
然后,外部构建系统将配置为:
Build Tool: tools/the_script.sh
Arguments: MyTarget1/MyTarget1-Info.plist MyTarget2/MyTarget2-Info.plist
Working Directory: $(SRCROOT)
然后
the_script.sh
将Info.plist
路径作为其唯一参数(运行之前请不要忘记chmod 0755
):#!/bin/sh
# Don't do anything when cleaning
if [ "$ACTION" = "clean" ]; then
exit 0
fi
if [ $# -eq 0 ]; then
echo usage: $0 info-plist \[ ... info-plist \]
exit 1
fi
while (( "$#" )); do
plist=$1
# Do work
/usr/libexec/PlistBuddy ... $plist
shift
done
关于ios - 在构建应用程序之前,从Info.plist文件中删除一个简单的 key ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25116968/