Ho creato progetto iOS quadro con questo metodo: https://github.com/jverkoey/iOS-Frameworkdipendenze di movimentazione per progetto iOS quadro
Opere abbastanza pulito, ma io sono un po 'confuso su come includere le biblioteche/quadri che sono necessari per il mio quadro di lavorare e, in particolare, come farlo in modo che nel caso un'app client di terze parti che utilizza il mio framework possa includere anche queste librerie senza conflitti.
Diciamo che il mio codice quadro ha bisogno di queste due cose:
- FacebookSDK.framework
- libFlurry.a
Il primo è un quadro di iOS. Quando lo aggiungo alla fase "Link Binary With Libraries" nel mio Framework e provo a compilare il progetto client che usa il mio framework il linker si lamenta dei simboli mancanti - Devo aggiungere FacebookSDK al progetto client che è fantastico: non c'è possibilità di conflitti se le app client vogliono usare Facebook.
Tuttavia, quando faccio lo stesso con la libreria statica Flurry, ricevo errori di simboli duplicati durante la compilazione del progetto client. Il che mi confonde un po ', perché FacebookSDK.framework non è solo una libreria statica pacchettizzata?
ukaszs-iMac:FacebookSDK.framework lukasz$ file Versions/A/FacebookSDK
Versions/A/FacebookSDK: Mach-O universal binary with 3 architectures
Versions/A/FacebookSDK (for architecture i386): current ar archive random library
Versions/A/FacebookSDK (for architecture armv7): current ar archive random library
Versions/A/FacebookSDK (for architecture cputype (12) cpusubtype (11)): current ar archive random library
Quindi le mie domande sono:
- perché una libreria incorporata nel quadro (come Facebook) non è legata al mio quadro del prodotto del progetto, mentre biblioteca incluso come .a file è?
- come includere un file .a nel mio framework in modo che non generi errori di simboli duplicati quando l'app client che utilizza il framework richiede anche questa particolare libreria statica?
Hai immaginato come fare questo? – anoop4real