Körning av pod install installerar den aktuella versionen av RestKit och genererar en Podfile.lock som anger exakt vilken version som installerats (t.ex. RestKit 0.10.3). Tack vare Podfile.lock kommer körning av pod install på detta hypotetiska projekt vid en senare tidpunkt på en annan maskin fortfarande att installera RestKit 0.10.3 även om en nyare version finns tillgänglig. CocoaPods kommer att respektera Pod-versionen i Podfile.lock om inte beroendet uppdateras i Pod-filen eller om pod update anropas (vilket leder till att en ny Podfile.lock genereras). På detta sätt undviker CocoaPods huvudvärk som orsakas av oväntade ändringar av beroenden.

Det finns en bra video från Google om hur detta fungerar: ”CocoaPods and Lockfiles (Route 85)”.

<Vad händer bakom kulisserna?

I Xcode, med referenser direkt från ruby-källkoden, sker följande:

  1. Skapar eller uppdaterar en arbetsyta.
  2. Lägger till ditt projekt till arbetsområdet om det behövs.
  3. Lägger till CocoaPods statiska biblioteksprojekt till arbetsområdet om det behövs.
  4. Lägger till libPods.a till: targets => build phases => link with libraries.
  5. Lägger till CocoaPods Xcode-konfigurationsfilen till appens projekt.
  6. Änder appens målkonfigurationer så att de baseras på CocoaPods.
  7. Lägger till en byggfas för att kopiera resurser från alla pods som du har installerat till ditt app-paket, dvs. en ”Script-byggfas” efter alla andra byggfaser med följande:
    • Shell: /bin/sh
    • Script: ${SRCROOT}/Pods/PodsResources.sh

Notera att steg 3 och framåt hoppas över om det statiska biblioteket CocoaPods redan finns i ditt projekt. Detta är till stor del baserat på Jonah Williams arbete om statiska bibliotek.

<Pods och submoduler

CocoaPods och git submoduler försöker lösa mycket liknande problem. Båda strävar efter att förenkla processen att inkludera tredjepartskod i ditt projekt. Submodules länkar till en specifik commit av det projektet, medan en CocoaPod är knuten till en versionerad utvecklarutgåva.

<Skifte från submodules till CocoaPods

Innan du bestämmer dig för att göra ett fullständigt byte till CocoaPods, ska du se till att alla bibliotek som du för närvarande använder är tillgängliga. Det är också en bra idé att registrera versionerna av de bibliotek du använder för närvarande, så att du kan ställa in CocoaPods så att det använder samma versioner. Det är också en bra idé att göra detta stegvis, genom att gå beroende för beroende i stället för att göra ett enda stort drag.

Lämna ett svar

Din e-postadress kommer inte publiceras.