使用fastlane

时间:2017-03-03 23:20:15

标签: ios fastlane

我有一个包含多个目标/方案的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权利而最初手动生成。我希望它在到期时自动为每个目标创建新的配置文件。

1 个答案:

答案 0 :(得分:5)

我不知道提供此类功能的任何fastlane操作,但您可以构建本地fastlane action,或创建并共享提供fastlane plugincode 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