2016-10-10 3 views
1
проект

My IOS используется 3-й партии (не с открытым исходным кодом) статической библиотеки (т.е. libA.a), и это libA.a используется CocoaLumberjack, он составлен CocoaLumberjack непосредственно в себя, и версия CocoaLumberjack неясно.Objective-C/IOS - Устраните дублированные символы внутри статической библиотеки

Теперь я также хочу использовать CocoaLumberjack для отслеживания журналов в моей программе, и это приведет к дублированным ошибкам символов, если я установлю CocoaLumberjack через CocoaPods.

Вопросы:

  1. Есть ли способ шкурой в CocoaLumberjack символы в libA.a так, что Xcode не будет сообщать об ошибках символов?

  2. Любые другие file logger библиотеки, которые могут быть рекомендованы?

Теперь я просматривал символы в libA.a, противопоставляя его с источником CocoaLumberjack, и я закрыл, чтобы найти версию CocoaLumberjacklibA.a используется, мой следующий шаг должен быть только в том числе заголовки файлов CocoaLumberjack в моем проект. Он должен работать, но мне это не нравится.

+0

Просто обновление. Наконец, мы получаем автора libA.a для удаления старой версии CocoaLumberjack из своей библиотеки. –

ответ

0

Вы можете распаковать объектные файлы из статической библиотеки и переупаковать их без файлов объектов CocoaLumberpack.

Что-то вроде:

$ ar x libA.a 
$ rm cococaLumberjackFile*.o  # Whatever they are called 
$ ar cr libA.a *.o 

Если статическая библиотека жира (содержит несколько архитектур процессоров), то это становится гораздо сложнее и включает в себя lipo и много боли.

EDIT: Просто используйте CocoaLumberjack в своем коде и связывайтесь с libA.a. Он предоставит объекты для сторонней библиотеки и CocoaLumberjack.

+0

Это выглядит довольно круто. Однако возможно, что 'libA.a' также использует' CocoaLumberjack', если я их удалю, я сомневаюсь, что код 'libA.a' будет работать с последней версией' CocoaLumberjack' или нет (из-за различных изменений в методах , и т.д.). Но если я могу узнать, какая версия 'CocoaLumberjack'' libA.a' используется, тогда я могу использовать ваш метод для включения источника 'CocoaLumberjack' в мой проект. –

+0

Дайте ему попробовать и узнайте. – Droppy

+0

Хм .. Не работает. В нем говорится: 'ar: libA.a - это жирный файл (используйте libtool (1) или lipo (1) и ar (1) на нем). ar: libA.a: Недопустимый тип файла или формат ' –

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