从{PRODUCT_NAME}到XCode包标识符格式化

28
假设我有一个 iPhone 应用程序,其在 XCode 构建设置中的产品名称为 "My App"(单词之间有空格)。在我的info.plist文件中,包标识符被指定为com.mycompany.${PRODUCT_NAME:rfc1034identifier} 在应用程序包中生成的info.plist中,包标识符显示为com.mycompany.My-App,我需要它变成 com.mycompany.MyApp。我该如何更改 Bundle Identifier 设置,以便按照我想要的方式转换产品名称?
附注: 如果我将${PRODUCT_NAME:rfc1034identifier} 更改为${PRODUCT_NAME:identifier},则生成的软件包标识符将是com.mycompany.My_App。 我只需要完全删除结果中产品名称中的空格字符。
3个回答

43

只需直接输入吗?

即,将 com.mycompany.${PRODUCT_NAME:rfc1034identifier} 直接替换为 com.mycompany.MyApp

如果您有多个目标需要不同的捆绑包名称,则一种方法是创建自己的变量并使用它。

在“生成”菜单中(选择您的项目并选择“获取信息”),您可以向项目添加自己的变量。如果您创建一个名为 MY_BUNDLE_NAME 的变量并将其设置为 MyApp,则可以将 com.mycompany.${MY_BUNDLE_NAME} 放入 plist 文件中。您应该能够为不同的目标设置 MY_BUNDLE_NAME 的不同值。


2
谢谢您的回答,但我的情况并不像那么简单!当然,您已经理解了我的问题,但我没有告诉您的是,我有几个相同应用程序的“目标”,需要具有不同的捆绑标识符。因此,我需要根据每个目标的构建设置动态配置捆绑标识符。例如,一个目标可能将“My App1”作为产品名称,而另一个目标可能将“My App2”作为产品名称。这就是为什么我需要动态执行此操作而不是硬编码的原因。 - ravinsp
1
啊,那样就更有意义了!我已经编辑了我的答案;希望这次更有帮助! - deanWombourne
谢谢Dean!这对我来说已经足够了,我可以看到这些用户定义的构建设置在其他地方也会对我有用。感谢您的提示! - ravinsp
延伸这个想法,并根据你拥有的目标数量,你可以考虑使用方案+构建配置和构建脚本,让你只有一个单一的目标,一切都动态配置。只是一个小提示 :) - Rich

0

在Xcode和iTunes上应该使用相同的Bundle ID:

在这个文件中 $ touch Info.plist

Bundle Identifier (App ID Suffix) 为您的App ID输入一个唯一标识符。推荐的做法是在App ID的Bundle Identifier部分使用反向域名样式字符串。

例如:com.domainname.appname


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接