我有一个包含多个目标/方案的Xcode项目设置,因此我在相同的代码库下有几个应用程序。
我在我的Fastfile中创建了以下测试通道,它运行了" sigh"我的每个应用程序的工具:
lane :testing do
["First", "Second", "Third", "Fourth"].each do |scheme_name|
sigh
end
end
查看fastlane文档,我看到你可以定义一个包标识符,叹息使用。但我需要它自动从每个目标/方案的plist中获取当前的bundle标识符并用它来叹息。这可以实现吗?
像(伪代码):
bundle_id = get_bundle_id_from_plist
sigh(app_identifier: bundle_id)
我尝试使用这个插件:https://github.com/SiarheiFedartsou/fastlane-plugin-versioning,它有一个获取plist路径的方法。然后我运行了这段代码:
bundle_id = get_info_plist_value(path: get_info_plist_path(target: scheme_name), key: 'CFBundleIdentifier')
puts bundle_id
输出是$(PRODUCT_BUNDLE_IDENTIFIER),实际上是plist值,所以我越来越近了。但是我需要这个来返回实际的bundle id,而不仅仅是它指向的变量。
我想要使用叹息的全部原因是因为每个应用程序/目标都有自己的配置文件,我必须由于CarPlay权利而最初手动生成。我希望它在到期时自动为每个目标创建新的配置文件。
答案 0 :(得分:5)
我不知道提供此类功能的任何fastlane
操作,但您可以构建本地fastlane action,或创建并共享提供fastlane plugin的code that updates an info plist using the scheme name {1}}使用Speed up fetching posts for my social network app by using query instead of observing a single event repeatedly作为示例。
此代码使用CFBundleIdentifier
Ruby gem从Scheme获取Info.plist文件。然后它会更改plist值,然后保存plist文件。您可以执行类似的操作,只需从plist返回xcodeproj
即可。
如果你不想创建这个插件,我可以在本周晚些时候创建它,因为这让我感兴趣。
此代码应该适用于您,直到我完成插件:
CFBundleIdentifier