2016-10-10 5 views
1

Mein iOS Projekt eine 3rd-Party verwendet (nicht Open Source) statische Bibliothek (dh libA.a), und diese libA.a verwendet CocoaLumberjack, es CocoaLumberjack direkt in selbst zusammengestellt, und die Version von CocoaLumberjack ist unklar.Objective-C/iOS - Resolve dupliziert Symbole in einer statischen Bibliothek

Jetzt möchte ich auch CocoaLumberjack verwenden, um Protokolle in meinem Programm zu verfolgen, und es wird doppelte Symbolfehler ergeben, wenn ich CocoaLumberjack über CocoaPods installiere.

Fragen:

  1. Gibt es eine Möglichkeit zu hide die CocoaLumberjack Symbole in libA.a so dass Xcode nicht Symbol Fehler melden?

  2. Alle anderen file logger Bibliotheken, die empfohlen werden können?

jetzt durch Symbole in libA.a ich suche, ist es mit der Quelle CocoaLumberjack kontras, und ich schloss mich die Version von CocoaLumberjacklibA.a verwendet, mein nächster Schritt nur in einschließlich Header sollte von CocoaLumberjack Dateien zu finden, meine Projekt. Es sollte funktionieren, aber ich mag diesen Weg nicht.

+0

Nur ein Update. Schließlich erhalten wir den Autor von libA.a, um die alte Version von CocoaLumberjack aus ihrer Bibliothek zu entfernen. –

Antwort

0

Sie können die Objektdateien aus der statischen Bibliothek entpacken und ohne die CocoaLumberpack-Objektdateien neu packen.

Etwas wie:

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

Wenn die statische Bibliothek Fett (enthält mehrere CPU-Architekturen) ist, dann wird diese viel schwieriger und lipo und viel Schmerz verbunden ist.

EDIT: Gehen Sie einfach voran und verwenden Sie CocoaLumberjack in Ihrem Code und verknüpfen Sie mit libA.a. Es wird die Objekte für die 3rd-Party-Bibliothek und CocoaLumberjack bereitstellen.

+0

Es sieht ziemlich cool aus. Es ist jedoch möglich, dass 'libA.a' auch' CocoaLumberjack' verwendet, wenn ich sie entferne, bezweifle ich, dass 'libA.a' Code mit der neuesten Version von' CocoaLumberjack' funktioniert oder nicht (wegen verschiedener Methodenänderungen , etc.). Aber wenn ich herausfinden kann, welche Version von 'CocoaLumberjack'' libA.a' verwendet wird, kann ich Ihre Methode verwenden, um die Quelle von 'CocoaLumberjack' in mein Projekt aufzunehmen. –

+0

Probieren Sie es aus und finden Sie es heraus. – Droppy

+0

Hmm .. Funktioniert nicht. Er sagt 'ar: libA.a ist eine fette Datei (benutze libtool (1) oder lipo (1) und ar (1) darauf). ar: libA.a: Unpassender Dateityp oder -format' –

Verwandte Themen