Een framework opnemen zonder het in de app-bundel te embedden

Ik ben nog steeds niet 100% zeker van het kaderverbindingsproces, maar van wat ik hier eerder heb gezien, heeft niemand een soortgelijke vraag gesteld, misschien omdat dit een domme vraag zou kunnen zijn, maar ik zal het toch proberen.

In mijn huidige X-Code-project gebruik ik een aangepast framework, bijvoorbeeld example.framework. Op dit moment, voor zover ik weet, om het programma te laten werken met het framework, moet ik het hebben in/Library/Frameworks, of ik moet het laten kopiëren naar de bundelresources in de build fase.

Weet iemand iets over het toevoegen van een framework aan een project op een manier dat het in het uitvoerbare bestand wordt gecompileerd, zodat ik het ruwe framework niet bij de app hoef te voegen? Ik deel liever niet het hele raamwerk ...

Dank u bij voorbaat! Alle suggesties zijn ook welkom!

1
Het lijkt erop dat wat je echt nodig hebt om mee te linken een statische bibliotheek is. Is dat een optie voor jou? "Framework" is in feite een mooie naam voor dynamische bibliotheek.
toegevoegd de auteur Michael Dautermann, de bron
Natuurlijk, ik denk het wel. Het enige probleem is dat het framework ook een bundel erin gebruikt. In het ideale geval zou ik het uitvoerbare bestand van de bundel en het uitvoerbare bestand van het framework in mijn uitvoerbare bestand willen samenvoegen, in plaats van zowel het framework als de bundel, met leesbare headers ... Zou u enig advies hebben over waar te beginnen met dit?
toegevoegd de auteur Tiago, de bron

1 antwoord

Een Mac OS X-framework is in feite een gedeelde bibliotheek, wat betekent dat het een apart binair bestand is.

Kortom, wanneer je hoofdbestand wordt gelanceerd, zal het besturingssysteem het framework/dylib in het geheugen laden en de symbolen in kaart brengen, zodat je hoofdbestand daar toegang toe heeft.

Merk op dat een framework/dylib (gebundeld in de applicatie of niet), niet de header-bestanden hoeft te bevatten, omdat deze alleen nodig zijn op compilatietijd.

Met Xcode kunt u daadwerkelijk beslissen of u de headerbestanden wilt opnemen wanneer u het framework naar de installatiemap kopieert (zie uw buildfasen).

enter image description here

Als u header-bestanden niet kopieert, kunnen mensen uw framework/dylib niet gebruiken (tenzij ze het reverse-engineeren, natuurlijk).

Als u nog steeds van mening bent dat een framework niet geschikt is voor uw behoeften, kunt u in plaats daarvan een statische bibliotheek maken.

Een statische bibliotheek is een afzonderlijk objectbestand (meestal .a) dat bij uw laatste binair bestand wordt "ingesloten", tijdens het koppelen.

Op deze manier hebt u slechts één binair bestand met de code uit de bibliotheek en uit uw project.

1
toegevoegd