Using subspec on CocoaPod for Separating Modules

December 3, 2019 Yuuki Nishiyama 0 Comments

CocoaPodsのsubspecを使えば、プロジェクト内に簡単にサブプロジェクトを作ることができる。AWAREFramework v1.7からこの機能を使って、Info.plistに追加設定が必要なプラグインをコア部分と切り離し可能にした。

基本情報

subspec 'Main' do |sp|
  sp.source_files = 'Classes/Main'
end

subspec 'Sub' do |sp|
  sp.source_files = 'Classes/Sub'
  sp.pod_target_xcconfig = {'GCC_PREPROCESSOR_DEFINITIONS' => 'LOCAL=1'}
end
spec.default_subspec = 'Main'


と設定すれば、

pod 'ShareKit'
pod 'ShareKit/Sub'

 

のように使える。また、.pod_target_xcconfig を使えば、任意のフラグをCocoaPodsのコンパイラに渡すことができるので、不必要なコードを消したり、サブプロジェクト毎に設定の変更ができる。ちなみに、

AWAREFrameworkでの実装

実際のAWAREFramework-iOSの.podspecはこちら。

https://github.com/tetujin/AWAREFramework-iOS/blob/master/AWAREFramework.podspec

ライブラリの使い方は、以下のサイトに記述している。

Minimize plugin import on AWAREFramework-iOS

AWAREFrameworkでは、Info.plistに追加記述が必要な以下のセンサをプラグイン化した。

  • Bluetooth
  • Motion Activity (Pedometer and Activity Recognition)
  • HealthKit
  • Calendar (Calendar and CalendarESM)
  • Contact
  • Microphone (Ambient Noise and Conversation )

プラグインをインポートする時は、以下のようにインポートできる。

   pod 'AWAREFramework'
   pod 'AWAREFramework/Microphone'
   pod 'AWAREFramework/MotionActivity'
   pod 'AWAREFramework/Bluetooth'
   pod 'AWAREFramework/Calendar'
   pod 'AWAREFramework/Contact'
   pod 'AWAREFramework/HealthKit'

これでAppStoreへのリリースが楽になるはず。これまでは、使っていないライブラリについても説明を追加する必要があった。この実装で、これらの問題は解決するはず。

参考資料

Leave a Reply:

Your email address will not be published. Required fields are marked *