使用 fastlane 在构建设置下按方案递增营销版本

如何解决使用 fastlane 在构建设置下按方案递增营销版本

我正在使用 fastlane 和 versioning plugin 尝试根据每个方案的 version number/marketing version 下的 marketing version 为不同的方案设置 build settings

get_version_number_from_plist 按预期工作并为每个方案检索 marketing version。我的预期结果是 increment_version_number_in_plist 增加 marketing version 中的 build settings 并在构建应用程序时使用该值,但是它抛出此错误

错误

Traceback (most recent call last):
    28: from /usr/local/Cellar/fastlane/2.181.0/libexec/bin/fastlane:23:in `<main>'
    27: from /usr/local/Cellar/fastlane/2.181.0/libexec/bin/fastlane:23:in `load'
    26: from /usr/local/Cellar/fastlane/2.181.0/libexec/gems/fastlane-2.181.0/bin/fastlane:23:in `<top (required)>'
    25: from /usr/local/Cellar/fastlane/2.181.0/libexec/gems/fastlane-2.181.0/fastlane/lib/fastlane/cli_tools_distributor.rb:122:in `take_off'
    24: from /usr/local/Cellar/fastlane/2.181.0/libexec/gems/fastlane-2.181.0/fastlane/lib/fastlane/commands_generator.rb:41:in `start'
    23: from /usr/local/Cellar/fastlane/2.181.0/libexec/gems/fastlane-2.181.0/fastlane/lib/fastlane/commands_generator.rb:352:in `run'
    22: from /usr/local/Cellar/fastlane/2.181.0/libexec/gems/commander-fastlane-4.4.6/lib/commander/delegates.rb:15:in `run!'
    21: from /usr/local/Cellar/fastlane/2.181.0/libexec/gems/fastlane-2.181.0/fastlane_core/lib/fastlane_core/ui/fastlane_runner.rb:76:in `run!'
    20: from /usr/local/Cellar/fastlane/2.181.0/libexec/gems/commander-fastlane-4.4.6/lib/commander/runner.rb:476:in `run_active_command'
    19: from /usr/local/Cellar/fastlane/2.181.0/libexec/gems/commander-fastlane-4.4.6/lib/commander/command.rb:153:in `run'
    18: from /usr/local/Cellar/fastlane/2.181.0/libexec/gems/commander-fastlane-4.4.6/lib/commander/command.rb:178:in `call'
    17: from /usr/local/Cellar/fastlane/2.181.0/libexec/gems/fastlane-2.181.0/fastlane/lib/fastlane/commands_generator.rb:108:in `block (2 levels) in run'
    16: from /usr/local/Cellar/fastlane/2.181.0/libexec/gems/fastlane-2.181.0/fastlane/lib/fastlane/command_line_handler.rb:36:in `handle'
    15: from /usr/local/Cellar/fastlane/2.181.0/libexec/gems/fastlane-2.181.0/fastlane/lib/fastlane/lane_manager.rb:47:in `cruise_lane'
    14: from /usr/local/Cellar/fastlane/2.181.0/libexec/gems/fastlane-2.181.0/fastlane/lib/fastlane/runner.rb:45:in `execute'
    13: from /usr/local/Cellar/fastlane/2.181.0/libexec/gems/fastlane-2.181.0/fastlane/lib/fastlane/runner.rb:45:in `chdir'
    12: from /usr/local/Cellar/fastlane/2.181.0/libexec/gems/fastlane-2.181.0/fastlane/lib/fastlane/runner.rb:49:in `block in execute'
    11: from /usr/local/Cellar/fastlane/2.181.0/libexec/gems/fastlane-2.181.0/fastlane/lib/fastlane/lane.rb:33:in `call'
    10: from Fastfile:28:in `block (2 levels) in parsing_binding'
     9: from /usr/local/Cellar/fastlane/2.181.0/libexec/gems/fastlane-2.181.0/fastlane/lib/fastlane/fast_file.rb:159:in `method_missing'
     8: from /usr/local/Cellar/fastlane/2.181.0/libexec/gems/fastlane-2.181.0/fastlane/lib/fastlane/runner.rb:157:in `trigger_action_by_name'
     7: from /usr/local/Cellar/fastlane/2.181.0/libexec/gems/fastlane-2.181.0/fastlane/lib/fastlane/runner.rb:229:in `execute_action'
     6: from /usr/local/Cellar/fastlane/2.181.0/libexec/gems/fastlane-2.181.0/fastlane/lib/fastlane/runner.rb:229:in `chdir'
     5: from /usr/local/Cellar/fastlane/2.181.0/libexec/gems/fastlane-2.181.0/fastlane/lib/fastlane/runner.rb:255:in `block in execute_action'
     4: from /usr/local/Cellar/fastlane/2.181.0/libexec/gems/fastlane-2.181.0/fastlane/lib/fastlane/actions/actions_helper.rb:69:in `execute_action'
     3: from /usr/local/Cellar/fastlane/2.181.0/libexec/gems/fastlane-2.181.0/fastlane/lib/fastlane/runner.rb:263:in `block (2 levels) in execute_action'
     2: from /usr/local/Cellar/fastlane/2.181.0/libexec/gems/fastlane-plugin-versioning-0.4.4/lib/fastlane/plugin/versioning/actions/increment_version_number_in_plist.rb:53:in `run'
     1: from /usr/local/Cellar/fastlane/2.181.0/libexec/gems/fastlane-plugin-versioning-0.4.4/lib/fastlane/plugin/versioning/actions/increment_version_number_in_xcodeproj.rb:44:in `run'
     /usr/local/Cellar/fastlane/2.181.0/libexec/gems/fastlane-plugin-versioning-0.4.4/lib/fastlane/plugin/versioning/actions/increment_version_number_in_xcodeproj.rb:95:in `set_version_number_using_scheme': 

目标

MyApp

相关方案

MyApp
Stg_MyApp

相关构建配置

Release
StgRelease

get_version_number_from_plist 工作正常并返回 3.3.0

get_version_number_from_plist(scheme: "MyApp",build_configuration_name: "Release",plist_build_setting_support: true); // returns 3.3.0

increment_version_number_in_plist 抛出一个错误,我从错误日志中不清楚导致错误的原因

increment_version_number_in_plist(scheme: "MyApp",plist_build_setting_support: true,version_number:'3.4.0') // Error

构建设置营销版本

build settings marketing version

信息.plist

info.plist

编辑

我相信我已经在 increment_version_number_in_xcodeproj 中的函数 set_version_number_using_scheme_working 中将错误缩小到这一行,但我不确定是什么导致了错误

project.build_settings["MARKETING_VERSION"] = next_version_number

通过修改 set_all_xcodeproj_version_numbers 的代码并循环遍历每个配置并将其与我传入的 build_configuration_name param 进行比较,我能够使其按预期工作

def self.set_version_number_using_scheme_working(params,next_version_number)
      project = Xcodeproj::Project.open(params[:xcodeproj])
      configs = project.objects.select { |obj| select_build_configuration_predicate(nil,obj) }
      configs.each do |config|
        if config.to_s === params[:build_configuration_name]
            config.build_settings["MARKETING_VERSION"] = next_version_number
        end
      end
      project.save
  end

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com(将#修改为@)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?