2016-08-06 4 views
2

Первый некоторый контекст:Swift, IOS 8+ проблема частной разделяемой библиотеки зависимостей

Я последовал ответ на этот question я отправил о том, как разделить Swift код между двумя приложения IOS. @ Сильван-Мосбергер любезно дал мне пошаговый рецепт, используя Карфаген, за которым я следую.

Частные общие рамки используют только Carthage для управления зависимостями, но мое потребительское приложение использует как Carthage, так и Pods (потому что некоторые фреймворки доступны только с Pod).

Мое потребительское приложение использует Carthage для всех фреймворков, которые также используются совместно используемой библиотекой. То есть, Cartfiles выглядят одинаково, за исключением того, что приложение-потребитель также имеет зависимость от общей структуры.

Моя проблема (Я думаю,) имеет структуру Parse, структуру ParseUI и структуру ParseFacebookUtilsV4. Парсе можно использовать с Карфаген, но ParseUI и ParseFacebookUtilsV4 не могут.

Я использую Pod для фреймворков ParseUI и ParseFacebookUtilsV4. Однако обе эти рамки зависят от Parse. Таким образом, существует ракурс Parse, предоставленный Pod (и один предоставленный Карфагеном). Они должны быть одинаковой версии (я не указываю версию).

Теперь актуальной проблеме (TL; DR):

Когда я запускаю мое приложение, оно умирает сразу со следующей ошибкой:

dyld: Library not loaded: @rpath/Parse.framework/Parse 
    Referenced from: /var/containers/Bundle/Application/6B8D5312-7690-477F-B406-3CA8F5C994CF/x.app/x 
    Reason: Incompatible library version: x requires version 1.0.0 or later, but Parse provides version 0.0.0 

Может ли это быть проблема с 2 рамками Parse? Возможно, что-то совершенно другое?

Любая помощь была бы принята с благодарностью.

Питер ...

UPDATE

Так, чтобы попытаться выяснить, что происходит, я создал новый проект приложения, чтобы имитировать приложение, которое терпит неудачу. Я использую идентичный файл Carthage и Podfile.

Новое приложение работает нормально. Я могу вызвать методы в библиотеке Parse. Без падений.

Думая, что, возможно, стручок вещь в Падают были «несвежей», я нашел способ заставить обновления стручка here используя следующее:

#!/usr/bin/env bash 

rm -rf "${HOME}/Library/Caches/CocoaPods" 
rm -rf "`pwd`/Pods/" 
pod update 

К сожалению, это не помогло. Приложение все еще работает, как показано выше.

Есть ли у кого-нибудь предложения относительно того, что это может быть? Любые предложения о том, как определить, что не так?

Я мог бы действительно использовать некоторую помощь :).

ответ

1

я наткнулся (и я имею в виду, спотыкаясь после нескольких дней поисков) через этот пост:

"Incompatible library version" when run on device

и, короче говоря, обновив свои CocoaPods в 1.0.1, проблема просто и волшебно пошел далеко.

Я не пробовал приложение на тренажере. Когда я это сделал, он бежал без сомнительной ошибки, которая привела меня (на что я надеюсь) к решению.

Смежные вопросы