Используйте Swift Pods в проекте Objective C
В настоящее время мы работаем над проектом, который разработан исключительно на языке Objective-C. Почему-то нам пришлось использовать проекты POD в качестве зависимости в нашем проекте. Один из проектов POD разработан с использованием языка Swift. Таким образом, мы создали мост для использования файла swift в классах target c.
Так что теперь, когда мы запускаем это приложение непосредственно на устройстве в режиме отладки, оно работает отлично. Но когда мы пытаемся развернуть это приложение с помощью Enterprise Distribution, оно устанавливается на устройства, но не открывается. Когда мы нажимаем на иконку приложения, чтобы открыть приложение, оно падает. Мы также проверили журналы устройства. Это показывает проблему при загрузке библиотек, которые являются производными от проектов POD.
Мы искали на многих форумах и веб-сайтах эту проблему. Все они предположили, что из-за изменений в структуре зависимости в файлах POD эта проблема возникает.
Например: до iOS 8 POD проекты были присоединены к приложению в виде статической библиотеки с расширением ".a". Но из iOS 8 и Swift 2.0 эти проекты включены в качестве динамических фреймворков с расширением.framework.
Мы перепробовали много решений, но они не работают. Мы также восстановили наш сертификат распространения, так как в iOS 9 были внесены некоторые изменения в поля сертификатов. Но все равно его не работает.
Итак, я хочу спросить: можем ли мы использовать проекты Swift POD в Objective C Project? Что должно быть основной причиной этой проблемы? В Swift 2.0 есть участие?
Пожалуйста, предложите какое-нибудь решение / обходной путь для этой проблемы.
2 ответа
Я решил эту проблему!
Чтобы решить эту проблему, вам нужно будет подписать свое приложение, используя сертификаты для подписи кода с установленной организационной единицей (OU) для вашей группы. Apple внесла изменения в свои сертификаты, поэтому вам нужно будет создать новый сертификат перед подписанием приложения.
Пожалуйста, следуйте этим шагам, чтобы решить проблему с сертификатом:
- Отмените распространение / сертификат разработчика
- Создать новый дистрибутив / сертификат разработчика
- Обновите соответствующий профиль вашим вновь созданным сертификатом
- Снова заархивируйте свое приложение с новым сертификатом
Это решило проблему для меня, но это все еще не работает в моем Mac PC. Когда я генерирую сборку из любого другого компьютера Mac, то он работает нормально. Поэтому я думаю, что могут быть проблемы, связанные с моими сертификатами и профилями цепочки ключей XCode и Mac Pc.
Надеюсь, что это может помочь вам!
:D
Swift-зависимости могут быть импортированы только CocoaPods как встроенные фреймворки, где вы указываете use_frameworks! в вашем Podfile, и это требует, чтобы цель развертывания iOS вашего приложения была установлена на 8.0 или выше.
Если вам нужна поддержка iOS 7, единственный способ использовать Swift Pod - это удалить эту зависимость Pod и напрямую добавить все файлы этого Pod в проект вашего приложения.