вторник, 27 апреля 2010 г.

Проблемы со статическими библиотеками при разработке iPhone-приложений

Если в приложении используется несколько статических библиотек (имеющих расширение.a), то иногда сборка приложения при изменении некоторых библиотек превращается в сущий кошмар.

Вот что мне удалось выяснить опытным путём, потратив на это многие часы.

1) Если что-то изменяется в одной из библиотек, от которой зависят одна или несколько других библиотек, то лучше всего сразу же радикально уничтожить не только сами устаревшие бинарные файлы этих библиотек, но и все промежуточные объектные файлы.

2) При переходе с Debug на Release или обратно разработчики нередко удаляют для подстраховки ненужные библиотеки (например из дерева проекта удаляют Debug-версии статических либ и добавляют Release-версии тех же самых статических либ, т.е. библиотек). Я поддерживаю такое решение, так как невозможно определённо сказать, будет ли Xcode правильно подбирать нужную либу из 2-х вариантов при сборке приложения. Увы, это уже подтверждается опытом. Но оказывается этой меры недостаточно! Нужно либо физически удалить ставшие ненужными (даже ненужными на время) бинарные файлы библиотек, либо просто переместить их в другое место (или хотя бы переименовать папку, где они были собраны в одном месте). Оказывается, часто случается так, что Xcode упорно отказывается линковать к приложению указанную в дереве проекта нужную вам библиотеку (например, Release) и линкует ту прежнюю библиотеку, которую вы уже убрали из дерева проекта. НО И ЭТОГО БЫВАЕТ МАЛО!!! Нужно удалять даже промежуточные объектные файлы (особенно в случаях, когда вы решили вообще отказаться использовать какую-то библиотеку, переместив её код непосредственно в проект.

Очень надеюсь, что Apple когда-нибудь исправит эти баги в Xcode (или в iPhone SDK).

Комментариев нет:

Отправить комментарий

Постоянные читатели

Архив блога