Using subspec on CocoaPod for Separating Modules
西山 勇毅
AWARE
Development
iOS
Mobile Sensing
Objective-C
Xcode

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
ライブラリの使い方は、以下のサイトに記述している。
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へのリリースが楽になるはず。これまでは、使っていないライブラリについても説明を追加する必要があった。この実装で、これらの問題は解決するはず。