Wat is het verschil tussen Embedded Binaries en Linked Frameworks

Bij gebruik van een extern framework heeft Xcode nu een sectie Embedded Binariesen Gelinkte Frameworks.

enter afbeelding beschrijving hier

Als je een extern framework downloadt en Finder->sleept naar Xcode, wordt het framework in de sectie Gelinkte frameworks en bibliothekengeplaatst.

Als u een bibliotheek bouwt met Carthage, raadt u aan deze naar de sectie Ingesloten binaire bestandente slepen.

Beide lijken te werken in termen van koppeling, aangezien de API hoe dan ook beschikbaar komt, en meer wanneer een framework wordt toegevoegd aan de sectie Embedded Binaries, wordt deze ook automatisch toegevoegd aan de Gekoppelde kaders en bibliothekensectie.

Dus, wie heeft gelijk? Carthago of de rest van het internet? en waarom zijn er 2 opties voor het opnemen van externe bronnen in Xcode-projecten?


Antwoord 1, autoriteit 100%

  1. Koppelen- We moeten een raamwerk koppelen als we een API gebruiken die erin is gedefinieerd.

  2. Inbedding – Dit proces zorgt ervoor dat het toegevoegde framework wordt ingesloten in de app-bundel en mogelijk helpt bij het delen van code tussen de app en eventuele extensiebundels. We sluiten alleen frameworks van derden in en niet degene die door iOS worden geleverd, omdat ze direct beschikbaar zijn op het apparaat. Als we insluiten, betekent dit dat we ook naar hen moeten linken zodat Xcode de build kan compileren en maken. Wanneer de app op het apparaat draait, wordt het ingebedde framework indien nodig in het geheugen geladen.


Antwoord 2, autoriteit 21%

Als u het binaire bestand insluit, wordt het in uw product opgenomen. Als u alleen een bibliotheek of framework koppelt zonder deze in te sluiten, maakt het geen deel uit van uw product.

In iOS8 moeten echter alle frameworks van derden worden “ingesloten”. Zelfs een raamwerk dat door verschillende programma’s wordt gedeeld, moet in elk van die programma’s worden ‘ingebed’. In het geval dat het op het apparaat op een gedeelde locatie was geïnstalleerd, kan elk ander installatieproces dat dezelfde “ingesloten” code van de gedeelde locatie gebruikt, die bestaande installatie opnieuw gebruiken. Dit is specifiek voor iOS8, het was niet mogelijk voor iOS8 en buiten de iOS-wereld zou dit antwoord niet juist zijn.


Antwoord 3

Linkingmeer over Linkerdie werkt tijdens het compileren of tijdens het laden/draaien. Linkerkopieereen Librarynaar een binair doel. Aangezien Frameworkautonoom is, is de Linkerin dit geval verantwoordelijk voor het vinden en koppelen van het Dynamic Frameworkbinnen het systeemladerpad of om binnen een bundelte zoeken en te linken.

Embeddingis een proces waarbij het binaire bestand naar het doel-binaire bestand wordt gekopieerd. Als gevolg hiervan zal het binnen worden geplaatst.

Lees hier


Antwoord 4

Koppelen– We moeten een raamwerk koppelen als we een API gebruiken die erin is gedefinieerd.

Inbedding– Dit proces zorgt ervoor dat het toegevoegde raamwerk
ingebed in de app-bundel en mogelijk helpt bij het delen van code
tussen de app en eventuele extensiebundels. We sluiten alleen derden in
frameworks en niet degene die door iOS worden geleverd, omdat ze gemakkelijk zijn
beschikbaar in het apparaat. Als we aan het inbedden zijn, betekent dat dat we:
moet ook naar hen linken zodat Xcode de . kan compileren en maken
bouwen. Wanneer de app op het apparaat draait, dan is het embedded framework
wordt indien nodig in het geheugen geladen

.


Antwoord 5

Voor zover ik weet, bevat het ingebedde binaire bestand alleen een dynamisch framework dat beschikbaar is op iOS 8 en hoger, anders kun je alleen het framework koppelen dat statisch is.

Other episodes