【问题标题】:Cocoapods: turning MagicalRecord logging offCocoapods:关闭 MagicalRecord 注销
【发布时间】:2013-02-23 09:52:30
【问题描述】:

关闭 MagicalRecord 需要在项目首次包含之前进行#define,但对于由 Cocoapods 管理的项目,我无权在 Pods 项目中添加#define。在这种情况下如何完全关闭注销?

我花了几个小时才想出办法,在这里发帖希望对其他人有所帮助。

编辑:这不是重复的,因为它讨论了在 Cocoapods 下关闭注销

【问题讨论】:

标签: ios objective-c xcode magicalrecord cocoapods


【解决方案1】:

您可以使用 post_install 挂钩来修改几乎任何构建设置。只需将此代码添加到您的 Podfile:

post_install do |installer|
  target = installer.project.targets.find{|t| t.to_s == "Pods-MagicalRecord"}
    target.build_configurations.each do |config|
        s = config.build_settings['GCC_PREPROCESSOR_DEFINITIONS']
        s = [ '$(inherited)' ] if s == nil;
        s.push('MR_ENABLE_ACTIVE_RECORD_LOGGING=0') if config.to_s == "Debug";
        config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] = s
    end
end

请注意,这只会在 debug 配置中禁用日志记录 - 在 release 配置中默认禁用日志记录。

【讨论】:

  • 别担心!很想听听解决这个问题的其他方法。
  • 由于我很少运行pod update,我只是将它添加到我的 pods pch 文件中。
  • 感谢分享!我对 ruby​​ 不是很熟悉,但是如果 s==nil : s = [ '$(inherited)' ] end : 符号是不必要的,你似乎有错字。我删除了它,一切都开始工作了。
  • 回复:错字 - 你可以输入s ||= [ '$(inherited)' ]
  • 但是,这个解决方案对我不起作用——我使用的是 MagicalRecord 2.1。即使通过破解 pod 的 .pch 文件,我似乎也无法使日志静音。我在 CocoaPods 0.25.0
【解决方案2】:

就我而言,我正在构建一个依赖于 MagicalRecord 的库。我不希望我的用户必须在他们的 Podfile 中添加 post_install 来消除嘈杂的日志记录,所以我将它添加到我的 podspec 中。

  s.prefix_header_contents = '#define MR_ENABLE_ACTIVE_RECORD_LOGGING 0'

这会自动将此 #define 语句添加到 Pods-prefix.pch,这会在使用我的 pod 的项目中使 MagicalRecord 日志记录静音。

【讨论】:

    【解决方案3】:

    对于 Magical Record 的开发分支(2.3.0 及更高版本),日志似乎仍然无法正常工作。像这样导入时: pod 'MagicalRecord', :git => 'https://github.com/magicalpanda/MagicalRecord', :branch => 'develop'

    我的 Xcode 控制台上没有日志记录输出。但是我改变了 Cocoapod 的 post_install 脚本。以下应启用日志记录: https://gist.github.com/Blackjacx/e5f3d62d611ce435775e

    有了包含在 GCC_PREPROCESSOR_DEFINITIONS 中的构建设置,Magical Record 的日志记录可以在 2.3.0++ 中使用 [MagicalRecord setLoggingLevel:] 进行控制

    【讨论】:

      【解决方案4】:

      您可以在 Pod 项目中关闭登录功能!

      只需添加预处理器宏:

      1. 只需进入“Pods”(!!!)项目即可。

      2. 然后找出 Pods-MagicalRecord 目标。

      3. 选择“构建设置”选项卡

      4. 查找“Apple LLVM 6.1 预处理”->“处理器宏”

      5. 推出“处理器宏”并添加到“调试”架构:“MR_ENABLE_ACTIVE_RECORD_LOGGING=0”

      就是这样!

      【讨论】:

      • 一旦你运行 pod update 这将停止工作:(
      【解决方案5】:

      我为那些使用新的 cocoapods 版本和 MagicalRecord 2.3.0 的人更新了 ank 的答案:

      post_install do |installer|
        target = installer.pods_project.targets.find{|t| t.to_s == "MagicalRecord"}
        target.build_configurations.each do |config|
          s = config.build_settings['GCC_PREPROCESSOR_DEFINITIONS']
          s = [ '$(inherited)' ] if s == nil;
          s.push('MR_LOGGING_DISABLED=1') if config.to_s == "Debug";
          config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] = s
        end
      end
      

      变化:

      • project 重命名为 pods_project
      • 目标Pods-MagicalRecord重命名为MagicalRecord
      • MR_ENABLE_ACTIVE_RECORD_LOGGING重命名为MR_LOGGING_DISABLED,值从0更改为1

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-05-30
        • 2012-10-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-19
        相关资源
        最近更新 更多