web-dev-qa-db-ja.com

podspecからXcodeプロジェクトに実行スクリプトビルドフェーズを追加します

Xcodeプロジェクトを変更し、プロジェクトのターゲットに「スクリプトビルドフェーズの実行」を追加する必要があるライブラリのCocoapods仕様を作成しようとしています。 post_install フックが使えると思いました。しかし、「pod spec lint」は、このフックが非推奨であることを示しています。

- WARN  | [iOS] The post install hook of the specification DSL has been deprecated, use the `resource_bundles` or the `prepare_command` attributes.

Post_installフックを* resource_bundles *または* prepare_command *に置き換える方法がわかりません。私の問題を解決するための他のアプローチを誰が知っていますか?出来ますか?

もう1つの問題は、Xcodeプロジェクトを変更してビルドフェーズを追加する方法ですが、実際には「post_hook問題」が解決された場合にのみ発生します。

25
opedge

Xcodeproj Ruby gem(Cocoapodsの一部)を使用して、Xcodeプロジェクトを変更するスクリプトを記述します。

次に、prepare_commandを使用してこのスクリプトを呼び出します。

require 'xcodeproj'
path_to_project = "${SOURCE_ROOT}/${PROJECT_NAME}.xcodeproj"
project = Xcodeproj::Project.open(path_to_project)
main_target = project.targets.first
phase = main_target.new_Shell_script_build_phase("Name of your Phase")
phase.Shell_script = "do sth with ${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/your.file"
project.save()

ドキュメント: http://rubydoc.info/gems/xcodeproj/frames

実行すると、ビルド設定変数とその値のリストを取得できます…

xcodebuild -project [ProjectName].xcodeproj -target "[TargetName]" -showBuildSettings

UPDATE:この回答が書かれてから、いくつかの変更がありました。環境変数へのアクセスの問題は現在ここで議論されています: https://github.com/CocoaPods/CocoaPods/issues/2115

36
Onato