Подтвердить что ты не робот

Cocoapods: отключение MagicalRecord

Отключение Logging от MagicalRecord требует создания #define до его первого включения в проект, но в случае проекта, управляемого Cocoapods, у меня нет доступа для добавления #define в проекте Pods. Как полностью отключить ведение журнала в этом сценарии?

Мне потребовалось несколько часов, чтобы выяснить способ сделать это, разместив здесь в надежде, что это поможет другим.

РЕДАКТИРОВАТЬ: это не дубликат, так как он обсуждает поворот журнала в Cocoapods

4b9b3361

Ответ 1

Вы можете использовать hook для post_install, чтобы изменить практически любую настройку сборки. Просто добавьте этот код в свой подфайл:

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

Обратите внимание, что это приведет к отключению регистрации в конфигурации отладки - по умолчанию отключена регистрация в конфигурации release.

Ответ 2

В моем случае я создавал библиотеку, которая зависела от MagicalRecord. Я не хотел, чтобы мои пользователи добавляли post_install в свой файл подкачки, чтобы отключить шумный журнал, поэтому я добавил его в свой podspec.

  s.prefix_header_contents = '#define MR_ENABLE_ACTIVE_RECORD_LOGGING 0'

Это автоматически добавляет этот оператор #define к Pods-prefix.pch, который заставляет MagicalRecord регистрироваться в проектах, которые используют мой модуль.

Ответ 3

Я обновил ответ ank для тех, кто использует новую версию cocoapods вместе с MagicalRecord 2.3.0:

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

Ответ 4

Вы можете отключить ведение журнала в проекте Pod!

Просто добавьте макросы препроцессора:

  • Просто зайдите в проект "Pods" (!!!).

  • Затем найдите цель Pods-MagicalRecord.

  • Выберите вкладку "Настройки сборки"

  • Найдите "Apple LLVM 6.1 Preprocessing" → "Макросы процессора"

  • Разверните "Макросы процессора" и добавьте в схему "Отладка": "MR_ENABLE_ACTIVE_RECORD_LOGGING = 0"

Это все!

Ответ 5

Для ветки разработки (версия 2.3.0 и выше) ведения журнала Magical Record, похоже, все еще работает неправильно. При импорте: pod 'MagicalRecord',: git = > 'https://github.com/magicalpanda/MagicalRecord',: branch = > 'develop'

У меня нет вывода журнала на моей консоли Xcode. Но я изменил post_install script Cocoapod. Следующее должно включить ведение журнала: https://gist.github.com/Blackjacx/e5f3d62d611ce435775e

С помощью этой сборки, включенной в GCC_PREPROCESSOR_DEFINITIONS, регистрация Magical Record может контролироваться в версии 2.3.0 ++ с помощью [MagicalRecord setLoggingLevel:]