实际上基于配置,我想删除并在Info.plist中添加一个键。使它动态。我已采用添加脚本的方法来完成此任务。

我尝试过的和遇到的问题在这里。

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

输出:我可以看到Xcode文件中的密钥已删除,但是当我要在iPA中看到密钥时,密钥仍然存在。因此,我相信Build系统已在删除密钥之前复制了该文件。看起来像执行脚本顺序的问题。

行动前构建方案看起来很有希望。

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

任何人都可以指出我在哪里可以看到我的行动前脚本的输出?

外部构建系统:我也尝试过此Running script only for an 'Archive' build in Xcode 4

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

  • 不确定如何提供脚本文件相对于项目
  • 的路径
  • 无法找到$ {INFOPLIST_File}这样的环境变量
  • 最佳答案

    最好使用外部构建系统模板创建一个新目标(并使其运行脚本),然后使应用程序/库/任何目标都依赖于此新目标。

    这样,它将在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.shInfo.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/

    10-14 20:45
    查看更多