ПРОБЛЕМА: Связывание с моей библиотекой добавляет 2 МБ к двоичному.Добавление большой статической библиотеки в качестве cocoapod или непосредственно добавляет ВСЕ объектные файлы к результирующему двоичному из-за флагов -ObjC-линкера
Я пытаюсь распространять свою собственную статическую библиотеку на iOS. Моя библиотека зависит от модулей KSCrash и ProtobufObjc. Pods скомпилированы в своих собственных целях, а позже, когда статические libs (libabc.a) связаны с целевым приложением - это обычная процедура работы с cocoapods. Существует флаг '-ObjC', переданный компоновщику, который вызывает ВСЕ объектные файлы из KSCrash и Protobuf, которые вытягиваются в приведенное бинарное приложение. В моем коде есть файлы, содержащие только категории, поэтому я не могу удалить эти флаги без последствий. Вытягивание этих 2 libs добавляет до 1.5MB к приведенному размеру приложения. Если я свяжусь без добавленного размера «-ObjC», это примерно наполовину меньше, потому что флаг dead_stip, который, я полагаю, работает, только если нет флагов «-ObjC», «load_all» и т. Д.
Вопрос: Как я могу заставить «dead_strip» или какой-либо другой механизм работать, не теряя категории Objective-C?
Извещение 1: Я не могу позволить себе лишить символы, потому что мне нужна символика на устройстве.
уведомление 2: Регенерация протокола protobuf с флагом LITE не уменьшает размер, я думаю, что мне нужно использовать версию на C++, чтобы он работал.
Хорошо, давайте так выразиться: Я связываюсь с одной большой библиотекой. Эта библиотека содержит, помимо прочего, файлы только для категорий. Мне не нужны все классы библиотеки. Существует флаг dead_stip, который удаляет все неиспользуемые классы из моего приложения, но я также включаю -ObjC, чтобы принудительно загрузить все символы. В результате dead_strip не работает. –
Можете ли вы далее описать, как структурирован проект? Является ли это ... а) App-Target напрямую связан с [libabc.a, KSCrash, ProtobufObjc] или b) ссылки приложения-цели на [libabc.a], и это связано с [KSCrash, ProtobufObjc] или совершенно другим? – hagi
Если вы знакомы с CocoaPods - приложение зависит от некоторых cocoapods. Похоже, что в рабочем пространстве есть 2 проекта - приложение и Pods. Проект Pods создает статическую библиотеку для каждого модуля, от которого я зависим. После создания всех статических библиотек он объединяет их в одну большую статическую библиотеку. После слияния его проект приложения создает источники приложений, а затем ссылки на этот большой-все-pods-вместе libarary с включенным флагом -ObjC. –