Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Managing your dependencies using Carthage
Search
Romain Pouclet
February 10, 2015
Programming
1
190
Managing your dependencies using Carthage
Using a dependency manager is cool, but you know what is cooler? ANOTHER DEPENDENCY MANAGER!
Romain Pouclet
February 10, 2015
Tweet
Share
More Decks by Romain Pouclet
See All by Romain Pouclet
Getting punched in the face for fun
romainpouclet
0
42
Buddybuild - Android Montreal - June 2017
romainpouclet
0
92
Closed source is best source
romainpouclet
0
420
Save countless hours of work with this one simple trick - Fastlane tools
romainpouclet
1
430
Taking a peek at ReactiveCocoa 3.0
romainpouclet
0
130
Cocoaheads Montréal: Xcode Bots
romainpouclet
1
120
Cocoaheads Montréal : Automated testing for iOS
romainpouclet
1
220
Intégration continue pour iOS
romainpouclet
0
440
Other Decks in Programming
See All in Programming
Patched fetch did not work
quramy
4
400
事業フェーズの変化に対応する 開発生産性向上のゼロイチ
masaygggg
0
200
AndroidアプリのUIバリエーションをあの手この手で確認する / Check UI variations of Android apps by various means
tkmnzm
1
180
A New Era of Testing
mannodermaus
2
510
Scala アプリケーションのビルドを改善してデプロイ時間を 1/4 にした話 | How I improved the build of my Scala application and reduced deployment time by 4x
nomadblacky
1
180
私のEbitengineの第一歩
qt_luigi
0
450
Crafting Cross-Platform Adventures: Building a Game Engine with Kotlin Multiplatform
dwursteisen
0
120
Using Livebook to build and deploy internal tools @ ElixirConf 2024
hugobarauna
0
250
はじめてみよう量子プログラミング
itokoichi01
0
220
Jakarta EE meets AI
ivargrimstad
0
390
React + TextAliveでカッコいいLyric Applicatioinを作ろう!!
tosuri13
0
400
仮想ファイルシステムを導入して開発環境のストレージ課題を解消する
segadevtech
2
550
Featured
See All Featured
How To Stay Up To Date on Web Technology
chriscoyier
786
250k
Embracing the Ebb and Flow
colly
83
4.4k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
227
52k
[RailsConf 2023] Rails as a piece of cake
palkan
48
4.6k
A Tale of Four Properties
chriscoyier
155
22k
Optimizing for Happiness
mojombo
375
69k
A Modern Web Designer's Workflow
chriscoyier
692
190k
Rebuilding a faster, lazier Slack
samanthasiow
78
8.6k
Statistics for Hackers
jakevdp
794
220k
Fireside Chat
paigeccino
31
2.9k
Ruby is Unlike a Banana
tanoku
96
11k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
278
13k
Transcript
Managing&your&dependencies&using& CocoaPods&Carthage Cocoaheads)Montréal)02/2015
Why$do$we$need$a$new$dependency$ manager$for$iOS$/$OSX?
We#don't.
Thanks!
Dependency(management? Automa'ng*the*process*of*installing,* upgrading,*configuring,*and*removing*libraries
Cocoapods(VS(Carthage
Cocoapods!VS!Carthage • Ruby&based,&Centralized&repository,&kinda&intrusive • List&dependencies&in&a&“Podfile”,&share&your&libs&using&a&JSON& “podspec”&file • Framework&support&since&0.36 • AutomaKc&doc&generaKon&at&cocoadocs.org
• PLUGINS&(ex:&github.com/orta/cocoapodsPkeys)!
Cocoapods!VS!Carthage h"ps:/ /github.com/search?u48=✓&q=filename%3APodfile
Cocoapods(is(s*ll(a(great(tool(and( you((probably)(don't(need(to(switch
Carthage • S#ll%really%fresh • Another%nice%tool%from%Github • (Painfully?)%wri<en%in%Swi=
Cocoapods(VS(Carthage h"ps:/ /github.com/search?u48=✓&q=filename%3ACartfile
Ge#ng&started&with&Carthage • Visit&github.com/Carthage/Carthage • Go&to&releases&and&download&latest • Open&*.pkg&blahblahblah or ! ~
$ brew install carthage
Ge#ng&started&with&Carthage ! ~ $ carthage
Carthage(leverages(the(power(of(Frameworks • Available)on)OSX)since)~1977)(*reference)required) • Available)on)iOS)since)Facebook)and)Dropbox)figured)a)way)to) cheat • Available)on)iOS)since)iOS)8 • Frameworks)can)contain)a)lot:)Views,)Controls,)Resources)(cf)
WWDC)#416)
A"basic"Cartfile Add#your#dependencies#(github#repo,#URL#to#git#repository)#into#a# Cartfile github "realm/realm-cocoa" == 0.90.3 github "Palleas/ReactiveCSVParser" "master"
Installing)/)Upda.ng)dependencies $ `carthage update` • Carthage)will)fetch)all)the)dependencies)in)the)Carthage/ Checkouts)folder)and)build)the)shared)schemes • A)Cartfile.resolved)that)you/have/to/commit)will)be)generated •
Frameworks)will)be)generated)in)Carthage/Build,)simply)drag) them)in)your)project
Submodules*are*cool*again! $"carthage"update"!!use!submodules (Don't'worry,'Carthage'handle'the'hard'part'automagically)
I"have"been"using"Carthage"for"a"few"weeks" now
I"tested"it"with"a"CSV"parser"I"wrote github.com/Palleas/Reac2veCSVParser
Sharing(my(framework:(share(the(scheme
Sharing(my(framework:(tag(and(push! $ git tag 0.0.1 $ git push origin master
--tags (Note&that&you&can&use&a&branch,&a&commit,&anything&git rev- parse&will&understand)
Adding&my&framework (Because(I(like(my(framework) $ echo 'Palleas/ReactiveCSVParser "~> 0.0.1"' >> Cartfile $
carthage update
Or#if#I#want#to#contribute... $ git clone
[email protected]
:Palleas/Catalog.git $ cd Catalog $ carthage
bootstrap
Some%issues%I%got Adding&a&framework&with&no&shared&schemes *** Fetching realm-cocoa *** Checking out realm-cocoa at
"b30" *** xcodebuild output can be found in /var/folders/qt/nys5f4b154x88ysnv0bccdbm0000gn/T/carthage-xcodebuild.uEWmAC.log Project "TightDbObjcDyn.xcodeproj" has no shared schemes
Project "TightDbObjcDyn.xcodeproj" has no shared schemes (Wat?)
Some%issues%I%got Using&Carthage&(well&actually,&it's&Frameworks)& in&a&command&line&tool (TL;DR:(It's(a(pain)
Con$nuous'Integra$on (Yes,&again.)
Se#ng&up&travis/ci Carthage(is(not(included(in(Travis3ci((yet?) #!/usr/bin/env bash echo "*********** Installing Carthage ***********" brew
update brew install carthage --HEAD
Se#ng&up&travis/ci Carthage(will(build(all(your(schemes,(even(the(one(you( don't(need echo "*********** Installing dependencies with Carthage ***********"
carthage bootstrap --no-build find Carthage/Checkouts -type f -name "*iOS*.xcscheme" -delete carthage build
Conclusion Carthage(is(great.(It(provides(less(features( than(Cocoapods(but(is(easier(to(use
Thanks! (Want&a&book?) (Photos'©'Camille'Furno'!)