【问题标题】:How do I get the name of the target that is currently running in Xcode?如何获取当前在 Xcode 中运行的目标的名称?
【发布时间】:2016-08-14 00:11:07
【问题描述】:

我有一个包含多个目标的 Xcode 项目。假设目标名称是AppFreeVersionAppPaidVersion。它们共享相同的代码库,但我想实现一些仅针对其中一个目标的逻辑。

在不修改我的方案或构建设置的情况下,有没有办法获取我当前目标名称的字符串? in this question 给出的解决方案要求我在构建设置中传递一个环境变量,我不想这样做。

【问题讨论】:

  • 也许下面的帖子可以帮助Answer
  • 也许下面的问题可以帮助Answer

标签: ios xcode build


【解决方案1】:

首先,您必须在相应目标的 .plist 文件中添加目标名称属性。那么你可以在代码中的任何地方获取它。

print("Target Name = " + (Bundle.main.infoDictionary?["TARGET_NAME"] as! String))

enter image description here

【讨论】:

    【解决方案2】:

    Niko 接受的答案仍在 Xcode 12.2 和 iOS 14.2 上为我工作

    这是一个屏幕截图,可以更好地阐明Info.plist 中需要做什么:

    你需要为每个目标对应的Info.plist做这个

    您甚至不需要使用 $(TARGET_NAME) 作为值,您可以提供自己的自定义唯一值并检查这些值。

    【讨论】:

      【解决方案3】:

      在 Swift 4.0 上

      let targetName = Bundle.main.infoDictionary?["TargetName"] as! String
      

      【讨论】:

      • 这不起作用,应用程序崩溃了。它没有在“Bundle.main.infoDictionary”中找到“TargetName”键。
      【解决方案4】:

      Swift 3.0 解决方案。

      func getTargetName() -> String {
          return Bundle.main.infoDictionary?["CFBundleName"] as! String
      }
      

      【讨论】:

      • CFBundleName 不是目标名称
      • 不是CFBundleName,也不是CFBundleDisplayName返回目标名称,很可能会在Info.plist中设置返回产品名称。
      【解决方案5】:

      只需在您的方案中设置目标名称 -> 环境变量 -> 添加名称和值。 例如:targetName = "mytesttarget"

      Obj-c

      NSDictionary* envir = [[NSProcessInfo processInfo] environment];

      NSString* targetName = envir[@"targetName"];

      斯威夫特

      让 envir = NSProcessInfo.processInfo().environment

      让 targetName = envir["targetName"]

      【讨论】:

        【解决方案6】:

        在 info.plist 中添加${TARGET_NAME} 怎么样?

        我猜你已经知道如何获得它了

        Obj-C

        [[NSBundle mainBundle] objectForInfoDictionaryKey:key_name];
        

        斯威夫特

        let targetName = NSBundle.mainBundle().infoDictionary?[key_name] as String
        

        【讨论】:

        • 这在 Xcode 9 中仍然可用吗?我将它添加到 Info.plist,但它似乎不起作用
        猜你喜欢
        • 2010-11-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-12
        • 2010-10-23
        • 2011-07-08
        • 2020-04-25
        • 1970-01-01
        相关资源
        最近更新 更多