MagicalRecordのログをオフにするには、プロジェクトに最初に含める前に#defineを作成する必要がありますが、Cocoapodsが管理するプロジェクトの場合、Podsプロジェクトに#defineを追加することはできません。このシナリオでログを完全にオフにするにはどうすればよいですか?
それを行う方法を見つけるのに数時間かかりました。他の人の役に立つことを願ってここに投稿しました。
編集:ログをオフにすることについて説明しているので、これは重複ではありませんCocoapodsの下で
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構成では、ログはデフォルトで無効になっています。
私の場合、MagicalRecordに依存するライブラリを構築していました。ノイズの多いログを消すために、ユーザーがPodfileにpost_installを追加する必要がないようにしたかったので、代わりにそれをpodspecに追加しました。
s.prefix_header_contents = '#define MR_ENABLE_ACTIVE_RECORD_LOGGING 0'
これにより、これが自動的に追加されます#define
Pods-prefix.pchへのステートメント。これにより、ポッドを使用するプロジェクトへのMagicalRecordのログインが停止されます。
MagicalRecord2.3.0と一緒に新しいcocoapodsバージョンを使用している人のために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
に変更されましたポッドプロジェクトへのログインをオフに切り替えることができます!
プリプロセッサマクロを追加するだけです。
「ポッド」(!!!)プロジェクトに入るだけです。
次に、Pods-MagicalRecordターゲットを見つけます。
「ビルド設定」タブを選択します
「AppleLLVM6.1前処理」->「プロセッサマクロ」を検索します
「プロセッサマクロ」をロールアウトし、「デバッグ」スキーマに追加します:「MR_ENABLE_ACTIVE_RECORD_LOGGING = 0」
それがすべてです!
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に含まれているビルド設定を使用すると、[MagicalRecord setLoggingLevel:]を使用して、2.3.0 ++でMagicalRecordのロギングを制御できます。