#ios #macos #cocoapods #tvos #watchos
#iOS #macos #cocoapods #tvos #watchos
Вопрос:
У меня есть набор фрагментов для iOS, macOS, watchOS и tvOS, которые я хотел бы встроить в библиотеку Cocoapod (возможно, поддерживающую также Carthage).
Сложность для меня заключается в том, что у меня есть целевые файлы для всех платформ (iOS, macOS tvOS и т.д.), Но некоторые файлы предназначены только для подмножества из них.
В моем проекте Xcode я разделил код по папкам типа:
Library_Common
(настроить все)Library_iOS
(целевая iOS)Library_WatchOS
(целевая watchOS)Library_MacOS
(целевая macOS)
Это связано с тем, что, например, может потребоваться часть библиотеки для iOS, UIKit
а MacOS
могут потребоваться другие фреймворки, недоступные для iOS.
Как я могу настроить podspec таким образом, чтобы эта библиотека могла быть встроена во все платформы?
Есть ли способ сделать это или лучше разделить его в разных библиотеках? Проблема такого подхода заключалась бы в том, что Library_Common
часть повторялась бы для каждой из них.
Комментарии:
2. Вопрос не в установке, а в создании самой библиотеки. 🙂
3. Да, лучше разделить ее на общие изменения и изменения на основе платформы. Таким образом, даже у конечного пользователя с несколькими платформами будет единственная копия Common. Если вы публикуете платформу с закрытым исходным кодом, вы должны использовать vendored_frameworks. Если это открытый исходный код, вы можете определить subspec.
Ответ №1:
Я наконец нашел то, что искал, и, похоже, это указано в podspec
самой документации. К сожалению, я не видел этого раньше:
https://guides.cocoapods.org/syntax/podspec.html#group_multi_platform_support
Это означает, что в моем случае у меня есть следующие настройки:
s.source_files = "MyLibrary_common/**/*.{h,m}"
s.ios.source_files = "MyLibrary_iOS/**/*.{h,m}"
s.osx.source_files = "MyLibrary_macOS/**/*.{h,m}"
s.tvos.source_files = "MyLibrary_tvOS/**/*.{h,m}"
s.watchos.source_files = "MyLibrary_watchOS/**/*.{h,m}"