在构建应用程序之前,从信息中删除一个简单的键.plist文件



实际上基于配置,我想在Info.plist中删除并添加一个键。让它充满活力。我采取了添加脚本的方法来完成此操作。

我尝试了什么,我遇到了什么问题,在这里。

添加一个构建脚本:添加脚本使用编辑器->添加构建阶段->添加运行脚本。

输出:我可以看到密钥在Xcode文件中被删除,但是当我要在iPA中看到它时,密钥仍然存在。因此,我相信Build系统在删除密钥之前已经复制了该文件。

预操作构建方案看起来很有希望。

问题:我在Pre-Action脚本中添加了简单的echo语句。但是我看不到它的输出。关于堆栈溢出的几个问题,我发现我们可以在console.app上看到它。但我试了很多次,我无法在console。app中看到它。我使用Xcode 5.1.1。

谁能指出我在哪里可以看到我的预动作脚本的输出?

外部构建系统:我也尝试了这个运行脚本只用于'Archive'build in Xcode 4

上述链接提供的解决方案中的问题:

  1. 不确定如何提供相对于项目的脚本文件路径
  2. 无法找到像${INFOPLIST_File}这样的环境变量

最好使用External Build System模板创建一个新目标(并让它运行脚本),然后让应用/库/任何目标依赖于这个新目标。

这样它将在Xcode甚至触及你的Info.plist之前运行,并且曾经有Xcode的问题(如果我没记错的话,在4.2中),在构建阶段运行修改Info.plist的脚本会使它崩溃。

我使用这种方法来使用TexturePacker命令行构建精灵表,并使用python脚本来增加我的构建号。

EDIT这里有一个要使用的设置示例,假设脚本在一个名为tools的目录中(我的首选位置),在Xcode项目的兄弟目录中,所以:

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

最新更新