Cocoapods: отключение MagicalRecord
Отключение Logging от MagicalRecord требует создания #define до его первого включения в проект, но в случае проекта, управляемого Cocoapods, у меня нет доступа для добавления #define в проекте Pods. Как полностью отключить ведение журнала в этом сценарии?
Мне потребовалось несколько часов, чтобы выяснить способ сделать это, разместив здесь в надежде, что это поможет другим.
РЕДАКТИРОВАТЬ: это не дубликат, так как он обсуждает поворот журнала в Cocoapods
Ответы
Ответ 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:]