SlideShare uma empresa Scribd logo
1 de 37
Baixar para ler offline
Women Who Code
iOS Meetup
2016 AUG 21
While on your journey of introducing a new experience for your amazing app
you hit a decision point.
Do you develop write your own code or do you use something someone has
written?
If you want to DIY, turn to page 57
If you want to use something someone has written, turn to page 154
What this talk IS covering
Dependency Management Options
Pros and Cons of each
My personal bias
What this talk IS NOT
covering
Application Architecture (kind of)
Project Structure (sort of)
System Configuration (just a little)
154
Cocoapods in 5 “easy” steps
$ sudo gem install cocoapods && pod setup —-verbose
$ pod init
$ pod install
$ nano Podfile
1
2
3
4
// sudo because it’s a global install
// gem because it’s written in Ruby
// Run setup… go take a break
// if setup breaks… there’s a fix
// creates a ‘Podfile’ with defaults
// Assumes you already are at the top level of your project
// (personal choice) use linux text editor for initial changes to Podfile
// select your platform
// select the libraries you want to use
// exit from the editor
// install libraries
5 $ open MyApp.xcworkspace // open workspace in XCode. W T H is a workspace?
# Uncomment this line to define a global platform for your project
# platform :ios, '9.0'
target 'PrettyRandom' do
# Comment this line if you're not using Swift and don't want to use dynamic frameworks
use_frameworks!
# Pods for PrettyRandom
pod 'CocoaLumberjack/Swift'
target 'PrettyRandomTests' do
inherit! :search_paths
# Pods for testing
end
target 'PrettyRandomUITests' do
inherit! :search_paths
# Pods for testing
end
end
# Uncomment this line to define a global platform for your project
# platform :ios, '9.0'
target 'PrettyRandom' do
# Comment this line if you're not using Swift and don't want to use dynamic frameworks
use_frameworks!
# Pods for PrettyRandom
pod 'CocoaLumberjack/Swift'
target 'PrettyRandomTests' do
inherit! :search_paths
# Pods for testing
end
target 'PrettyRandomUITests' do
inherit! :search_paths
# Pods for testing
end
end
I love homebrew
http://brew.sh
Carthage in 5 “easy”-ish steps
$ brew install carthage
$ nano Cartfile
$ carthage update —-platform iOS
1
2
3
4
// shouldn’t take long
// it’s easier to start a Cartfile from here
// install libraries for the type of app you are building for
// extremely minimalistic
// This is platform dependent
// you must manually link your libraries
// It has to be done through the XCode UI
4?
github "CocoaLumberjack/CocoaLumberjack"
Carthage Step 4 (a) … (c)
macOS
iOS, watchOS, tvOS
• On your application targets’ “General” settings tab, in the “Embedded Binaries” section, drag and drop each
framework you want to use from the Carthage/Build folder on disk.
• On your application target’s “Build Phases” settings tab, click the “+” icon and choose “New Copy Files Phase”.
• For each framework you’re using, drag and drop its corresponding dSYM file.
• On your application targets’ “General” settings tab, in the “Linked Frameworks and Libraries” section, drag and
drop each framework you want to use from the Carthage/Build folder on disk.
• On your application targets’ “Build Phases” settings tab, click the “+” icon and choose “New Run Script Phase”.
Create a Run Script in which you specify your shell (ex: bin/sh), add the following contents to the script area below
the shell:
• and add the paths to the frameworks you want to use under “Input Files”, e.g.:
/usr/local/bin/carthage copy-frameworks
$(SRCROOT)/Carthage/Build/iOS/Box.framework
$(SRCROOT)/Carthage/Build/iOS/Result.framework
$(SRCROOT)/Carthage/Build/iOS/ReactiveCocoa.framework
Swift PM in 5
$ swift package init --type executable
$ swift package generate-xcodeproj
1
2
3
5
// creates a ‘Package.swift’ with defaults
// Assumes you already are at the top level of
your project
// depending on your internets, this could take a while
// add dependencies
// generates PrettyRandom.xcodeproj file
Install Xcode 8.0 (beta)
$ open PrettyRandom.xcodeproj
4
import PackageDescription
let package = Package(
name: "PrettyRandom",
dependencies: [
.Package(url: "https://github.com/thecb4/SwiftyJSON.git", versions: Version(3,0,2)..<Version(3,0,34)),
]
)
$ nano Package.swift
// open Xcode (beta) and realize nothing works because
the library isn’t Swift 3 compatible
Swift PM in 5… Nevermind
$ swift package init --type executable
$ swift package generate-xcodeproj
1
2
3
5
// creates a ‘Package.swift’ with defaults
// Assumes you already are at the top level of
your project
// depending on your internets, this could take a while
// add dependencies
// generates PrettyRandom.xcodeproj file
Install Xcode 8.0 (beta)
$ open PrettyRandom.xcodeproj
4
import PackageDescription
let package = Package(
name: "PrettyRandom",
dependencies: [
.Package(url: "https://github.com/thecb4/SwiftyJSON.git", versions: Version(3,0,2)..<Version(3,0,34)),
]
)
$ nano Package.swift
// open Xcode (beta) and realize nothing works because
the library isn’t Swift 3 compatible
side by side comparison
Written In Ruby Swift Swift
Current Version 1.0.1 0.16.2 swiftpm-18
Control File Podfile Cartfile Package.swift
Repository Cocoapods Trunk git git
Libraries 3000+ 3000+1 ???
Search Index website,
command line
If it’s on github you can
use it1
IBM Catalog
Version support Semantic Semantic Semantic
Target Support Yes What target? On Roadmap
Integration Type Source Source or Binary Source
Platform Support
macOS, iOS, watchOS,
tvOS
macOS, iOS, watchOS,
tvOS
Linux, macOS2, iOS2,
watchOS2, tvOS2
Swift Support 2.2.3 2.2.3 3.0
1. The library has to have a Shared Scheme to work
2. If you are building a library you are fine. Anything with a UI is a lot of work
I love carthage
https://github.com/Carthage/Carthage
Written In Ruby Swift Swift
Current Version 1.0.1 0.16.2 swiftpm-18
Control File Podfile Cartfile Package.swift
Repository Cocoapods Trunk git git
Libraries 3000+ 3000+1 ???
Search Index website,
command line
If it’s on github you can
use it1
IBM Catalog
Version support Semantic Semantic Semantic
Target Support Yes What target? On Roadmap
Integration Type Source Source or Binary Source
Platform Support
macOS, iOS, watchOS,
tvOS
macOS, iOS, watchOS,
tvOS
Linux, macOS2, iOS2,
watchOS2, tvOS2
Swift Support 2.2.3 2.2.3 3.0
1. The library has to have a Shared Scheme to work
2. If you are building a library you are fine. Anything with a UI is a lot of work
Any Questions?
references
These slides… http://goo.gl/oJM5Pf
Homebrew… http://brew.sh
Carthage… https://github.com/Carthage/Carthage
Cocoapods… https://cocoapods.org
Swift Package Manager… https://swift.org/package-manager
Libraries vs. Frameworks… http://www.knowstack.com/framework-vs-library-cocoa-ios/
contact
cavelle@thecb4.io
@_thecb4

Mais conteúdo relacionado

Mais procurados

Php Dependency Management with Composer ZendCon 2016
Php Dependency Management with Composer ZendCon 2016Php Dependency Management with Composer ZendCon 2016
Php Dependency Management with Composer ZendCon 2016Clark Everetts
 
WebRTC - Brings Real-Time to the Web
WebRTC - Brings Real-Time to the WebWebRTC - Brings Real-Time to the Web
WebRTC - Brings Real-Time to the WebVũ Nguyễn
 
drone continuous Integration
drone continuous Integrationdrone continuous Integration
drone continuous IntegrationBo-Yi Wu
 
PHP & JavaScript & CSS Coding style
PHP & JavaScript & CSS Coding stylePHP & JavaScript & CSS Coding style
PHP & JavaScript & CSS Coding styleBo-Yi Wu
 
Console Apps: php artisan forthe:win
Console Apps: php artisan forthe:winConsole Apps: php artisan forthe:win
Console Apps: php artisan forthe:winJoe Ferguson
 
A Modest Introduction to Swift
A Modest Introduction to SwiftA Modest Introduction to Swift
A Modest Introduction to SwiftJohn Anderson
 
High Productivity Web Development Workflow
High Productivity Web Development WorkflowHigh Productivity Web Development Workflow
High Productivity Web Development WorkflowVũ Nguyễn
 
Moderne Android Builds mit Gradle
Moderne Android Builds mit GradleModerne Android Builds mit Gradle
Moderne Android Builds mit Gradleinovex GmbH
 
Cenário atual do PHP e Introdução ao Laravel no Devinvale 2014
Cenário atual do PHP e Introdução ao Laravel no Devinvale 2014Cenário atual do PHP e Introdução ao Laravel no Devinvale 2014
Cenário atual do PHP e Introdução ao Laravel no Devinvale 2014Julio Bitencourt
 
手機自動化測試和持續整合
手機自動化測試和持續整合手機自動化測試和持續整合
手機自動化測試和持續整合Carl Su
 
Perl Continous Integration
Perl Continous IntegrationPerl Continous Integration
Perl Continous IntegrationMichael Peters
 
用 Go 語言實戰 Push Notification 服務
用 Go 語言實戰 Push Notification 服務用 Go 語言實戰 Push Notification 服務
用 Go 語言實戰 Push Notification 服務Bo-Yi Wu
 
Dependency management in golang
Dependency management in golangDependency management in golang
Dependency management in golangRamit Surana
 
Lesson 02 - React Native Development Environment Setup
Lesson 02 - React Native Development Environment SetupLesson 02 - React Native Development Environment Setup
Lesson 02 - React Native Development Environment SetupUniversity of Catania
 
Lunch and learn as3_frameworks
Lunch and learn as3_frameworksLunch and learn as3_frameworks
Lunch and learn as3_frameworksYuri Visser
 
Getting your Hooks into Cordova
Getting your Hooks into CordovaGetting your Hooks into Cordova
Getting your Hooks into CordovaGavin Pickin
 
Apache Cordova, Hybrid Application Development
Apache Cordova, Hybrid Application DevelopmentApache Cordova, Hybrid Application Development
Apache Cordova, Hybrid Application Developmentthedumbterminal
 

Mais procurados (20)

LVPHP.org
LVPHP.orgLVPHP.org
LVPHP.org
 
Php Dependency Management with Composer ZendCon 2016
Php Dependency Management with Composer ZendCon 2016Php Dependency Management with Composer ZendCon 2016
Php Dependency Management with Composer ZendCon 2016
 
WebRTC - Brings Real-Time to the Web
WebRTC - Brings Real-Time to the WebWebRTC - Brings Real-Time to the Web
WebRTC - Brings Real-Time to the Web
 
drone continuous Integration
drone continuous Integrationdrone continuous Integration
drone continuous Integration
 
PHP & JavaScript & CSS Coding style
PHP & JavaScript & CSS Coding stylePHP & JavaScript & CSS Coding style
PHP & JavaScript & CSS Coding style
 
Console Apps: php artisan forthe:win
Console Apps: php artisan forthe:winConsole Apps: php artisan forthe:win
Console Apps: php artisan forthe:win
 
Automate Yo' Self
Automate Yo' SelfAutomate Yo' Self
Automate Yo' Self
 
A Modest Introduction to Swift
A Modest Introduction to SwiftA Modest Introduction to Swift
A Modest Introduction to Swift
 
High Productivity Web Development Workflow
High Productivity Web Development WorkflowHigh Productivity Web Development Workflow
High Productivity Web Development Workflow
 
Moderne Android Builds mit Gradle
Moderne Android Builds mit GradleModerne Android Builds mit Gradle
Moderne Android Builds mit Gradle
 
Cenário atual do PHP e Introdução ao Laravel no Devinvale 2014
Cenário atual do PHP e Introdução ao Laravel no Devinvale 2014Cenário atual do PHP e Introdução ao Laravel no Devinvale 2014
Cenário atual do PHP e Introdução ao Laravel no Devinvale 2014
 
手機自動化測試和持續整合
手機自動化測試和持續整合手機自動化測試和持續整合
手機自動化測試和持續整合
 
Perl Continous Integration
Perl Continous IntegrationPerl Continous Integration
Perl Continous Integration
 
用 Go 語言實戰 Push Notification 服務
用 Go 語言實戰 Push Notification 服務用 Go 語言實戰 Push Notification 服務
用 Go 語言實戰 Push Notification 服務
 
Dependency management in golang
Dependency management in golangDependency management in golang
Dependency management in golang
 
Lesson 02 - React Native Development Environment Setup
Lesson 02 - React Native Development Environment SetupLesson 02 - React Native Development Environment Setup
Lesson 02 - React Native Development Environment Setup
 
Lunch and learn as3_frameworks
Lunch and learn as3_frameworksLunch and learn as3_frameworks
Lunch and learn as3_frameworks
 
Getting Your Hooks into Cordova
Getting Your Hooks into CordovaGetting Your Hooks into Cordova
Getting Your Hooks into Cordova
 
Getting your Hooks into Cordova
Getting your Hooks into CordovaGetting your Hooks into Cordova
Getting your Hooks into Cordova
 
Apache Cordova, Hybrid Application Development
Apache Cordova, Hybrid Application DevelopmentApache Cordova, Hybrid Application Development
Apache Cordova, Hybrid Application Development
 

Destaque

Apple - what's new in iOS 10, watchOS 3 & tvOS 10
Apple - what's new in iOS 10, watchOS 3 & tvOS 10Apple - what's new in iOS 10, watchOS 3 & tvOS 10
Apple - what's new in iOS 10, watchOS 3 & tvOS 10Accedo
 
Learn watchOS Programming!
Learn watchOS Programming! Learn watchOS Programming!
Learn watchOS Programming! Snehal Patil
 
Apple Watch Technology & WatchOS 2
Apple Watch Technology & WatchOS 2Apple Watch Technology & WatchOS 2
Apple Watch Technology & WatchOS 2Saransh Viswari
 
[CocoaHeads Tricity] watchOS 2 - native apps are coming
[CocoaHeads Tricity] watchOS 2 - native apps are coming[CocoaHeads Tricity] watchOS 2 - native apps are coming
[CocoaHeads Tricity] watchOS 2 - native apps are comingMateusz Klimczak
 
watchOS 2でゲーム作ってみた話
watchOS 2でゲーム作ってみた話watchOS 2でゲーム作ってみた話
watchOS 2でゲーム作ってみた話Kohki Miki
 
Transfer data from iPhone to iWatch
Transfer data from iPhone to iWatchTransfer data from iPhone to iWatch
Transfer data from iPhone to iWatchPawan Ramteke
 
C language in our world 2016
C language in our world 2016C language in our world 2016
C language in our world 2016Juraj Michálek
 
D2 OPEN SEMINAR - WWDC 핫 이슈
D2 OPEN SEMINAR - WWDC 핫 이슈D2 OPEN SEMINAR - WWDC 핫 이슈
D2 OPEN SEMINAR - WWDC 핫 이슈NAVER D2
 
Development of Mobile Applications
Development of Mobile ApplicationsDevelopment of Mobile Applications
Development of Mobile ApplicationsDávid Kaya
 

Destaque (10)

Apple - what's new in iOS 10, watchOS 3 & tvOS 10
Apple - what's new in iOS 10, watchOS 3 & tvOS 10Apple - what's new in iOS 10, watchOS 3 & tvOS 10
Apple - what's new in iOS 10, watchOS 3 & tvOS 10
 
Learn watchOS Programming!
Learn watchOS Programming! Learn watchOS Programming!
Learn watchOS Programming!
 
Apple Watch Technology & WatchOS 2
Apple Watch Technology & WatchOS 2Apple Watch Technology & WatchOS 2
Apple Watch Technology & WatchOS 2
 
[CocoaHeads Tricity] watchOS 2 - native apps are coming
[CocoaHeads Tricity] watchOS 2 - native apps are coming[CocoaHeads Tricity] watchOS 2 - native apps are coming
[CocoaHeads Tricity] watchOS 2 - native apps are coming
 
watchOS 2でゲーム作ってみた話
watchOS 2でゲーム作ってみた話watchOS 2でゲーム作ってみた話
watchOS 2でゲーム作ってみた話
 
Transfer data from iPhone to iWatch
Transfer data from iPhone to iWatchTransfer data from iPhone to iWatch
Transfer data from iPhone to iWatch
 
C language in our world 2016
C language in our world 2016C language in our world 2016
C language in our world 2016
 
Apple watch course
Apple watch courseApple watch course
Apple watch course
 
D2 OPEN SEMINAR - WWDC 핫 이슈
D2 OPEN SEMINAR - WWDC 핫 이슈D2 OPEN SEMINAR - WWDC 핫 이슈
D2 OPEN SEMINAR - WWDC 핫 이슈
 
Development of Mobile Applications
Development of Mobile ApplicationsDevelopment of Mobile Applications
Development of Mobile Applications
 

Semelhante a Dependent things dependency management for apple sw - slideshare

State ofappdevelopment
State ofappdevelopmentState ofappdevelopment
State ofappdevelopmentgillygize
 
Run your Java code on Cloud Foundry
Run your Java code on Cloud FoundryRun your Java code on Cloud Foundry
Run your Java code on Cloud FoundryAndy Piper
 
MobileConf 2021 Slides: Let's build macOS CLI Utilities using Swift
MobileConf 2021 Slides:  Let's build macOS CLI Utilities using SwiftMobileConf 2021 Slides:  Let's build macOS CLI Utilities using Swift
MobileConf 2021 Slides: Let's build macOS CLI Utilities using SwiftDiego Freniche Brito
 
Try! Swift Tokyo2017
Try! Swift Tokyo2017Try! Swift Tokyo2017
Try! Swift Tokyo2017Amy Cheong
 
Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20
Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20
Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20Michael Lihs
 
carrow - Go bindings to Apache Arrow via C++-API
carrow - Go bindings to Apache Arrow via C++-APIcarrow - Go bindings to Apache Arrow via C++-API
carrow - Go bindings to Apache Arrow via C++-APIYoni Davidson
 
symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)
symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)
symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)Fabien Potencier
 
What is CocoaPods and how to setup?
What is CocoaPods and how to setup?What is CocoaPods and how to setup?
What is CocoaPods and how to setup?Milan Panchal
 
Pharo IoT Installation Improvements and Continuous Integration
Pharo IoT Installation Improvements and Continuous IntegrationPharo IoT Installation Improvements and Continuous Integration
Pharo IoT Installation Improvements and Continuous IntegrationAllex Oliveira
 
PHARO IoT: Installation Improvements and Continuous Integration
PHARO IoT: Installation Improvements and Continuous IntegrationPHARO IoT: Installation Improvements and Continuous Integration
PHARO IoT: Installation Improvements and Continuous IntegrationPharo
 
Habitat Overview
Habitat OverviewHabitat Overview
Habitat OverviewMandi Walls
 
Dependencies Managers in C/C++. Using stdcpp 2014
Dependencies Managers in C/C++. Using stdcpp 2014Dependencies Managers in C/C++. Using stdcpp 2014
Dependencies Managers in C/C++. Using stdcpp 2014biicode
 
WebSocket on client & server using websocket-sharp & ASP.NET Core
WebSocket on client & server using websocket-sharp & ASP.NET CoreWebSocket on client & server using websocket-sharp & ASP.NET Core
WebSocket on client & server using websocket-sharp & ASP.NET CoreChen Yu Pao
 
Настройка окружения для кросскомпиляции проектов на основе docker'a
Настройка окружения для кросскомпиляции проектов на основе docker'aНастройка окружения для кросскомпиляции проектов на основе docker'a
Настройка окружения для кросскомпиляции проектов на основе docker'acorehard_by
 
Run your Java apps on Cloud Foundry
Run your Java apps on Cloud FoundryRun your Java apps on Cloud Foundry
Run your Java apps on Cloud FoundryAndy Piper
 
Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)
Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)
Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)jaxLondonConference
 
Porting your favourite cmdline tool to Android
Porting your favourite cmdline tool to AndroidPorting your favourite cmdline tool to Android
Porting your favourite cmdline tool to AndroidVlatko Kosturjak
 
Untangling fall2017 week2_try2
Untangling fall2017 week2_try2Untangling fall2017 week2_try2
Untangling fall2017 week2_try2Derek Jacoby
 

Semelhante a Dependent things dependency management for apple sw - slideshare (20)

State ofappdevelopment
State ofappdevelopmentState ofappdevelopment
State ofappdevelopment
 
Run your Java code on Cloud Foundry
Run your Java code on Cloud FoundryRun your Java code on Cloud Foundry
Run your Java code on Cloud Foundry
 
MobileConf 2021 Slides: Let's build macOS CLI Utilities using Swift
MobileConf 2021 Slides:  Let's build macOS CLI Utilities using SwiftMobileConf 2021 Slides:  Let's build macOS CLI Utilities using Swift
MobileConf 2021 Slides: Let's build macOS CLI Utilities using Swift
 
Try! Swift Tokyo2017
Try! Swift Tokyo2017Try! Swift Tokyo2017
Try! Swift Tokyo2017
 
Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20
Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20
Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20
 
Apache Cordova
Apache CordovaApache Cordova
Apache Cordova
 
carrow - Go bindings to Apache Arrow via C++-API
carrow - Go bindings to Apache Arrow via C++-APIcarrow - Go bindings to Apache Arrow via C++-API
carrow - Go bindings to Apache Arrow via C++-API
 
symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)
symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)
symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)
 
What is CocoaPods and how to setup?
What is CocoaPods and how to setup?What is CocoaPods and how to setup?
What is CocoaPods and how to setup?
 
Pharo IoT Installation Improvements and Continuous Integration
Pharo IoT Installation Improvements and Continuous IntegrationPharo IoT Installation Improvements and Continuous Integration
Pharo IoT Installation Improvements and Continuous Integration
 
PHARO IoT: Installation Improvements and Continuous Integration
PHARO IoT: Installation Improvements and Continuous IntegrationPHARO IoT: Installation Improvements and Continuous Integration
PHARO IoT: Installation Improvements and Continuous Integration
 
Habitat Overview
Habitat OverviewHabitat Overview
Habitat Overview
 
Dependencies Managers in C/C++. Using stdcpp 2014
Dependencies Managers in C/C++. Using stdcpp 2014Dependencies Managers in C/C++. Using stdcpp 2014
Dependencies Managers in C/C++. Using stdcpp 2014
 
Composer
ComposerComposer
Composer
 
WebSocket on client & server using websocket-sharp & ASP.NET Core
WebSocket on client & server using websocket-sharp & ASP.NET CoreWebSocket on client & server using websocket-sharp & ASP.NET Core
WebSocket on client & server using websocket-sharp & ASP.NET Core
 
Настройка окружения для кросскомпиляции проектов на основе docker'a
Настройка окружения для кросскомпиляции проектов на основе docker'aНастройка окружения для кросскомпиляции проектов на основе docker'a
Настройка окружения для кросскомпиляции проектов на основе docker'a
 
Run your Java apps on Cloud Foundry
Run your Java apps on Cloud FoundryRun your Java apps on Cloud Foundry
Run your Java apps on Cloud Foundry
 
Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)
Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)
Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)
 
Porting your favourite cmdline tool to Android
Porting your favourite cmdline tool to AndroidPorting your favourite cmdline tool to Android
Porting your favourite cmdline tool to Android
 
Untangling fall2017 week2_try2
Untangling fall2017 week2_try2Untangling fall2017 week2_try2
Untangling fall2017 week2_try2
 

Último

Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Velvetech LLC
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Andreas Granig
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaHanief Utama
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesPhilip Schwarz
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsAhmed Mohamed
 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Cizo Technology Services
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceBrainSell Technologies
 
Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Mater
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024StefanoLambiase
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmSujith Sukumaran
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作qr0udbr0
 
PREDICTING RIVER WATER QUALITY ppt presentation
PREDICTING  RIVER  WATER QUALITY  ppt presentationPREDICTING  RIVER  WATER QUALITY  ppt presentation
PREDICTING RIVER WATER QUALITY ppt presentationvaddepallysandeep122
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityNeo4j
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxTier1 app
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Hr365.us smith
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationBradBedford3
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfAlina Yurenko
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odishasmiwainfosol
 

Último (20)

2.pdf Ejercicios de programación competitiva
2.pdf Ejercicios de programación competitiva2.pdf Ejercicios de programación competitiva
2.pdf Ejercicios de programación competitiva
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief Utama
 
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort ServiceHot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a series
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML Diagrams
 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. Salesforce
 
Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalm
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作
 
PREDICTING RIVER WATER QUALITY ppt presentation
PREDICTING  RIVER  WATER QUALITY  ppt presentationPREDICTING  RIVER  WATER QUALITY  ppt presentation
PREDICTING RIVER WATER QUALITY ppt presentation
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered Sustainability
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion Application
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
 

Dependent things dependency management for apple sw - slideshare

  • 1. Women Who Code iOS Meetup 2016 AUG 21
  • 2.
  • 3.
  • 4. While on your journey of introducing a new experience for your amazing app you hit a decision point. Do you develop write your own code or do you use something someone has written? If you want to DIY, turn to page 57 If you want to use something someone has written, turn to page 154
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10. What this talk IS covering Dependency Management Options Pros and Cons of each My personal bias
  • 11. What this talk IS NOT covering Application Architecture (kind of) Project Structure (sort of) System Configuration (just a little)
  • 12. 154
  • 13.
  • 14. Cocoapods in 5 “easy” steps $ sudo gem install cocoapods && pod setup —-verbose $ pod init $ pod install $ nano Podfile 1 2 3 4 // sudo because it’s a global install // gem because it’s written in Ruby // Run setup… go take a break // if setup breaks… there’s a fix // creates a ‘Podfile’ with defaults // Assumes you already are at the top level of your project // (personal choice) use linux text editor for initial changes to Podfile // select your platform // select the libraries you want to use // exit from the editor // install libraries 5 $ open MyApp.xcworkspace // open workspace in XCode. W T H is a workspace? # Uncomment this line to define a global platform for your project # platform :ios, '9.0' target 'PrettyRandom' do # Comment this line if you're not using Swift and don't want to use dynamic frameworks use_frameworks! # Pods for PrettyRandom pod 'CocoaLumberjack/Swift' target 'PrettyRandomTests' do inherit! :search_paths # Pods for testing end target 'PrettyRandomUITests' do inherit! :search_paths # Pods for testing end end
  • 15. # Uncomment this line to define a global platform for your project # platform :ios, '9.0' target 'PrettyRandom' do # Comment this line if you're not using Swift and don't want to use dynamic frameworks use_frameworks! # Pods for PrettyRandom pod 'CocoaLumberjack/Swift' target 'PrettyRandomTests' do inherit! :search_paths # Pods for testing end target 'PrettyRandomUITests' do inherit! :search_paths # Pods for testing end end
  • 16.
  • 17.
  • 18.
  • 20.
  • 21. Carthage in 5 “easy”-ish steps $ brew install carthage $ nano Cartfile $ carthage update —-platform iOS 1 2 3 4 // shouldn’t take long // it’s easier to start a Cartfile from here // install libraries for the type of app you are building for // extremely minimalistic // This is platform dependent // you must manually link your libraries // It has to be done through the XCode UI 4? github "CocoaLumberjack/CocoaLumberjack"
  • 22. Carthage Step 4 (a) … (c) macOS iOS, watchOS, tvOS • On your application targets’ “General” settings tab, in the “Embedded Binaries” section, drag and drop each framework you want to use from the Carthage/Build folder on disk. • On your application target’s “Build Phases” settings tab, click the “+” icon and choose “New Copy Files Phase”. • For each framework you’re using, drag and drop its corresponding dSYM file. • On your application targets’ “General” settings tab, in the “Linked Frameworks and Libraries” section, drag and drop each framework you want to use from the Carthage/Build folder on disk. • On your application targets’ “Build Phases” settings tab, click the “+” icon and choose “New Run Script Phase”. Create a Run Script in which you specify your shell (ex: bin/sh), add the following contents to the script area below the shell: • and add the paths to the frameworks you want to use under “Input Files”, e.g.: /usr/local/bin/carthage copy-frameworks $(SRCROOT)/Carthage/Build/iOS/Box.framework $(SRCROOT)/Carthage/Build/iOS/Result.framework $(SRCROOT)/Carthage/Build/iOS/ReactiveCocoa.framework
  • 23.
  • 24.
  • 25.
  • 26.
  • 27. Swift PM in 5 $ swift package init --type executable $ swift package generate-xcodeproj 1 2 3 5 // creates a ‘Package.swift’ with defaults // Assumes you already are at the top level of your project // depending on your internets, this could take a while // add dependencies // generates PrettyRandom.xcodeproj file Install Xcode 8.0 (beta) $ open PrettyRandom.xcodeproj 4 import PackageDescription let package = Package( name: "PrettyRandom", dependencies: [ .Package(url: "https://github.com/thecb4/SwiftyJSON.git", versions: Version(3,0,2)..<Version(3,0,34)), ] ) $ nano Package.swift // open Xcode (beta) and realize nothing works because the library isn’t Swift 3 compatible
  • 28. Swift PM in 5… Nevermind $ swift package init --type executable $ swift package generate-xcodeproj 1 2 3 5 // creates a ‘Package.swift’ with defaults // Assumes you already are at the top level of your project // depending on your internets, this could take a while // add dependencies // generates PrettyRandom.xcodeproj file Install Xcode 8.0 (beta) $ open PrettyRandom.xcodeproj 4 import PackageDescription let package = Package( name: "PrettyRandom", dependencies: [ .Package(url: "https://github.com/thecb4/SwiftyJSON.git", versions: Version(3,0,2)..<Version(3,0,34)), ] ) $ nano Package.swift // open Xcode (beta) and realize nothing works because the library isn’t Swift 3 compatible
  • 29.
  • 30. side by side comparison
  • 31. Written In Ruby Swift Swift Current Version 1.0.1 0.16.2 swiftpm-18 Control File Podfile Cartfile Package.swift Repository Cocoapods Trunk git git Libraries 3000+ 3000+1 ??? Search Index website, command line If it’s on github you can use it1 IBM Catalog Version support Semantic Semantic Semantic Target Support Yes What target? On Roadmap Integration Type Source Source or Binary Source Platform Support macOS, iOS, watchOS, tvOS macOS, iOS, watchOS, tvOS Linux, macOS2, iOS2, watchOS2, tvOS2 Swift Support 2.2.3 2.2.3 3.0 1. The library has to have a Shared Scheme to work 2. If you are building a library you are fine. Anything with a UI is a lot of work
  • 33. Written In Ruby Swift Swift Current Version 1.0.1 0.16.2 swiftpm-18 Control File Podfile Cartfile Package.swift Repository Cocoapods Trunk git git Libraries 3000+ 3000+1 ??? Search Index website, command line If it’s on github you can use it1 IBM Catalog Version support Semantic Semantic Semantic Target Support Yes What target? On Roadmap Integration Type Source Source or Binary Source Platform Support macOS, iOS, watchOS, tvOS macOS, iOS, watchOS, tvOS Linux, macOS2, iOS2, watchOS2, tvOS2 Swift Support 2.2.3 2.2.3 3.0 1. The library has to have a Shared Scheme to work 2. If you are building a library you are fine. Anything with a UI is a lot of work
  • 34.
  • 36. references These slides… http://goo.gl/oJM5Pf Homebrew… http://brew.sh Carthage… https://github.com/Carthage/Carthage Cocoapods… https://cocoapods.org Swift Package Manager… https://swift.org/package-manager Libraries vs. Frameworks… http://www.knowstack.com/framework-vs-library-cocoa-ios/