настройка
У меня есть приложение для iOS MY-App
, в котором используется мой собственный фреймворк MY-Framework
.Оба написаны в swift
.Приложение обрабатывает только аутентификацию пользователя и передает токен доступа MY-Framework
.MY-Framework
затем обрабатывает весь ScreenFlow и бизнес-логику.Цель состоит в том, чтобы распространить MY-Framework
среди клиентов, чтобы использовать его в своих приложениях.
минимальный образец настройки проекта, демонстрирующий эту проблему, доступен здесь: https://github.com/vprimachenko/lottie-pod-problem-sample
теперь я былчтобы улучшить мой фреймворк, мы предоставили представления с некоторыми анимациями и должны были использовать lottie .я использую cocoapods версия 1.6.0-pre
Наивная попытка
Я создал Podfile
со следующим содержанием
target 'fw' do
pod 'lottie-ios'
end
, что привело кошибка компиляции в фреймворке
./fw/fw/File.swift:4:8: error: no such module 'Lottie'
import Lottie
^
фреймворки
после некоторого поиска в Google я изменил свой Podfile
на:
target 'fw' do
use_frameworks!
pod 'lottie-ios'
end
результат: сбой во время выполнения
dyld: Library not loaded: @rpath/Lottie.framework/Lottie
Referenced from: .../Build/Products/Debug-iphonesimulator/fw.framework/fw
Reason: image not found
может быть модульные заголовки?
cocoapods в заметках о выпуске упоминается use_modular_headers!
, давайте попробуем:
target 'fw' do
use_modular_headers!
pod 'lottie-ios'
end
result: ошибка компилятора в содержащем приложении
./app/app/ViewController.swift:3:8: error: missing required module 'Lottie'
import fw
^
может быть и то и другое?
target 'fw' do
use_modular_headers!
use_frameworks!
pod 'lottie-ios'
end
результат: сбой во время выполнения
dyld: Library not loaded: @rpath/Lottie.framework/Lottie
Referenced from: .../Build/Products/Debug-iphonesimulator/fw.framework/fw
Reason: image not found
взлом
после некоторой попытки обойти я смог решитьСитуация, предоставив мой собственный заголовок для Lottie
, но это больше похоже на клейкую ленту, чем на правильное решение.Я все еще опубликую это позже как дополнительный ответ.
Мой вопрос
Как правильно использовать, интегрировать lottie-ios
cocoapod таким образом, чтобы он полностью содержался в MY-Framework
, поэтомукогда я делюсь им с клиентом, они могут просто вставить его в свое приложение и не беспокоиться о каких-либо зависимостях?
Выпускать его как частный модуль с зависимостями, к сожалению, не вариант.