SlideShare ist ein Scribd-Unternehmen logo
1 von 30
Downloaden Sie, um offline zu lesen
Carthage ou Cocoapods?
Cleber Henriques
Technical Leader @ ilegra
cleber.neto@ilegra.com
github.com/cleberhenriques 
facebook.com/cleber.henriques
Senta que lá vem história...
iOS Timeline
2007 ‑ Lançamento do iPhone e iPhone OS.
2008 ‑ iPhone OS 2 ‑ iOS SDK & App Store
2009 ‑ iPhone OS 3
2010 ‑ iOS 4
2011 ‑ iOS 5 ‑ CocoaPods
2012 ‑ iOS 6
2013 ‑ iOS 7
2014 ‑ iOS 8 ‑ Swift & Carthage
2015 ‑ iOS 9
2016 ‑ iOS 10 ‑ Estamos aqui 
"CocoaPods is a dependency manager for Swift and Objective‑C Cocoa projects. It has over
23 thousand libraries and is used in over 1.2 million apps. CocoaPods can help you scale your
projects elegantly."
Instalação:
No terminal:
# Xcode 7 + 8
$ sudo gem install cocoapods --pre
# Xcode 7
sudo gem install activesupport -v 4.2.6
sudo gem install cocoapods
O CocoaPods é escrito em Ruby e a equipe do CocoaPods recomenda que você utilize o Ruby
default do OSX
Utilizacão
No terminal, vá para a raiz do projeto
 pod init  para criar o Podfile
Abrir o Podfile
Adicionar as bibliotecas desejadas no Podfile
Salvar o Podfile
 pod install  para iniciar a instalação das dependências
 open App.xcworkspace  ‑ A partir de agora você deve utilizar o workspace para
trabalhar!
Sobre o Podfile:
platform :ios, '8.0' // Versão mínima do iOS que o projeto dará suporte.
use_frameworks! // Necessário para compilar bibliotecas escritas em Swift.
target 'MyApp' do // Target do projeto que irá usar as bibliotecas
pod 'AFNetworking' // Nome da biblioteca.
pod 'ORStackView', '~> 3.0' // Nome da biblioteca e especificação de versão
pod 'SwiftyJSON', :git => 'https://github.com/
SwiftyJSON/SwiftyJSON.git', :branch => 'dev' // Nome e especificação da Branch
end
E porquê tem uma pasta Pods no meu projeto agora?
É  a pasta que o CocoPods criou para armazenar as dependências que você instalou.
Adicionar ela ao repositório do projeto é uma decisão sua.
Mas se não adicionar, não esqueça de "Lockar" as versões das dependências.
Adicionar ao repositório ou não, dá uma boa discussão :)
De consumidor a fornecedor...
Agora vamos aprender a contribuir com a comunidade, distribuindo a nossa própria
dependência.
O nome dela é MapChoices e com ela vai ser possível mostrar em uma  UIActionSheet  os
aplicativos de mapas instalados no iPhone do usuário.
Bora lá...
Criando o projeto com o CocoaPods
No terminal, execute o seguinte comando:
pod lib create MapChoices
Este comando irá criar o esqueleto do projeto. Basta você ir respondendo algumas perguntas.
Esqueleto do projeto:
Com o projeto pronto, agora é hora de fazer o deploy.
Mas primeiro...
... precisamos nos autenticar no Trunk:
Agora devemos acessar o link que o trunk nos enviou para confirmar a conexão da nossa
máquina com o trunk.
pod trunk register cleberhenriques@gmail.com 'Cleber Henriques' --description='macbook
Agora sim, vamos ao deploy:
Ao rodar:
pod trunk push
O Comando  push  irá:
Executar o  linter  no seu Podspec localmente.
Se o  linter  executar com sucesso, o CocoaPods irá enviar seu Podspec para o Trunk e
torná‑lo público.
Alertar via webhook outros serviços a existência de um novo CocoaPod. Por exemplo:
CocoaPods.org
Sobre o Podspec:
Pod::Spec.new do |s|
s.name = 'MapChoices'
s.version = '0.1.0'
s.summary = "A simple iOS library that let users choose which
navigation should the app open."
s.description = "A simple iOS library that let users choose which
navigation should the app open. With just one method call, you show
a UIActionSheet with all the installed map Apps in the user's phone."
s.homepage = 'https://github.com/OpenCraft/MapChoices'
# s.screenshots = 'www.example.com/screenshots_1'
s.license = { :type => 'MIT', :file => 'LICENSE' }
s.author = { 'Cleber' => 'cleberhenriques@ilegra.com' }
s.source = { :git => 'https://github.com/OpenCraft/MapChoices.git',
:tag => s.version.to_s }
# s.social_media_url = 'https://twitter.com/<TWITTER_USERNAME>'
s.ios.deployment_target = '8.0'
s.source_files = 'MapChoices/Classes/**/*'
end
Carthage
"A simple, decentralized dependency manager for Cocoa"
Instalação
Acessar a pagina: https://github.com/Carthage/Carthage/releases
Baixar o arquivo  Carthage.pkg 
Abrir e seguir as instruções na tela.
Utilização
Fluxo básico:
Criar o Cartfile:  touch Cartfile , que irá listar todas as bibliotecas que você quer ter em
seu projeto.
No terminal:  carthage update .
O comando anterior irá baixar e compilar cada biblioteca nas pastas:
Carthage/Checkouts
Importar os binários  .framework  no projeto do Xcode.
Sobre o Cartfile:
github "ReactiveCocoa/ReactiveCocoa" >= 2.3.1 # Requer no mínimo versão 2.3.1
github "Mantle/Mantle" ~> 1.0 # (1.0 ou maior, porém menor que 2.0)
github "jspahrsummers/libextobjc" == 0.4.1 # Exatamente a versão 0.4.1
github "jspahrsummers/xcconfigs" # Usar sempre a ultima versão disponível
github "jspahrsummers/xcconfigs" "branch" # Use the latest version
# Use a project from GitHub Enterprise
github "https://enterprise.local/ghe/desktop/git-error-translations"
# Use a project from any arbitrary server, on the "development" branch
git "https://enterprise.local/desktop/git-error-translations2.git" "development"
git "file:///directory/to/project" "branch" # Use a local project
De consumidor a fornecedor, de novo.
Agora que já temos nossa biblioteca pronta e distribuída pelo CocoaPods, torná‑la disponível
pelo Carthage é mais simples do que você pode imaginar.
Passo 1
Criar um projeto de Framework no Xcode:
Passo 2
Adicionar as classes da biblioteca existente no projeto de framework:
Passo 3
Certificar‑se que o esquema está compartilhado:
Passo 4
Adicionar a badge de compatibilidade com o Carthage no Readme.md de sua biblioteca:
CarthageCarthage compatiblecompatible
Ship it! 
git commit -am "Added Carthage support"
git push origin master
Agora é só utilizar :)
CocoaPods:
pod 'MapChoices', '~> 0.1.0'
Carthage:
github 'OpenCraft/MapChoices' ~> 0.1.0
Principais diferenças:
CocoaPods:
É mais fácil de integrar.
Existem mais frameworks disponíves. (Mas isto está mudando...)
Carthage:
É decentralizado
É menos intrusivo e mais flexível que o CocoaPods
Concluindo...
Muito obrigado!
Essa apresentação foi feita utilizando o Marp.

Weitere ähnliche Inhalte

Andere mochten auch

Andere mochten auch (20)

TDC2016POA \ Trilha Analise Negocios - Agregando valor sem trauma: como trans...
TDC2016POA \ Trilha Analise Negocios - Agregando valor sem trauma: como trans...TDC2016POA \ Trilha Analise Negocios - Agregando valor sem trauma: como trans...
TDC2016POA \ Trilha Analise Negocios - Agregando valor sem trauma: como trans...
 
TDC2016POA | Trilha .NET - O que esperar do C# 7
TDC2016POA | Trilha .NET - O que esperar do C# 7TDC2016POA | Trilha .NET - O que esperar do C# 7
TDC2016POA | Trilha .NET - O que esperar do C# 7
 
TDC2016POA | Trilha .NET - .NET Entity Core 1.0
TDC2016POA | Trilha .NET - .NET Entity Core 1.0TDC2016POA | Trilha .NET - .NET Entity Core 1.0
TDC2016POA | Trilha .NET - .NET Entity Core 1.0
 
TDC2016POA | Trilha .NET - CQRS e ES na prática com RavenDB
TDC2016POA | Trilha .NET - CQRS e ES na prática com RavenDBTDC2016POA | Trilha .NET - CQRS e ES na prática com RavenDB
TDC2016POA | Trilha .NET - CQRS e ES na prática com RavenDB
 
TDC2016POA | Trilha .NET - C# como você nunca viu: conceitos avançados de pro...
TDC2016POA | Trilha .NET - C# como você nunca viu: conceitos avançados de pro...TDC2016POA | Trilha .NET - C# como você nunca viu: conceitos avançados de pro...
TDC2016POA | Trilha .NET - C# como você nunca viu: conceitos avançados de pro...
 
Inspeção e Adaptação no Scrum com Indicadores de Resultado e Direção | TDC PO...
Inspeção e Adaptação no Scrum com Indicadores de Resultado e Direção | TDC PO...Inspeção e Adaptação no Scrum com Indicadores de Resultado e Direção | TDC PO...
Inspeção e Adaptação no Scrum com Indicadores de Resultado e Direção | TDC PO...
 
TDC 2016 |Trilha DevOps - Dissecando e entendendo pipelines de entrega de sof...
TDC 2016 |Trilha DevOps - Dissecando e entendendo pipelines de entrega de sof...TDC 2016 |Trilha DevOps - Dissecando e entendendo pipelines de entrega de sof...
TDC 2016 |Trilha DevOps - Dissecando e entendendo pipelines de entrega de sof...
 
TDC2016POA | Trilha .NET - Trazendo o poder dos containers ao mundo .NET
TDC2016POA | Trilha .NET -  Trazendo o poder dos containers ao mundo .NETTDC2016POA | Trilha .NET -  Trazendo o poder dos containers ao mundo .NET
TDC2016POA | Trilha .NET - Trazendo o poder dos containers ao mundo .NET
 
TDC2016 POA | Trilha DevOps - Blue-Green Deployment com Docker
TDC2016 POA | Trilha DevOps - Blue-Green Deployment com DockerTDC2016 POA | Trilha DevOps - Blue-Green Deployment com Docker
TDC2016 POA | Trilha DevOps - Blue-Green Deployment com Docker
 
TDC2016 | Trilha PHP - Xdebug: Seus problemas acabaram!
TDC2016 | Trilha PHP - Xdebug: Seus problemas acabaram!TDC2016 | Trilha PHP - Xdebug: Seus problemas acabaram!
TDC2016 | Trilha PHP - Xdebug: Seus problemas acabaram!
 
Palestra "Ionic Framework 2 - O que vem por aí?" TDC 2016
Palestra "Ionic Framework 2 - O que vem por aí?" TDC 2016Palestra "Ionic Framework 2 - O que vem por aí?" TDC 2016
Palestra "Ionic Framework 2 - O que vem por aí?" TDC 2016
 
A Importância do Teste Continuo
A Importância do Teste ContinuoA Importância do Teste Continuo
A Importância do Teste Continuo
 
O que Evitar na Escrita de Criterios de Aceite
O que Evitar na Escrita de Criterios de AceiteO que Evitar na Escrita de Criterios de Aceite
O que Evitar na Escrita de Criterios de Aceite
 
Análise de dados com R - TDC 2015
Análise de dados com R - TDC 2015Análise de dados com R - TDC 2015
Análise de dados com R - TDC 2015
 
TDC2016POA | Trilha Education - Robótica Livre nas escolas públicas do RS: a ...
TDC2016POA | Trilha Education - Robótica Livre nas escolas públicas do RS: a ...TDC2016POA | Trilha Education - Robótica Livre nas escolas públicas do RS: a ...
TDC2016POA | Trilha Education - Robótica Livre nas escolas públicas do RS: a ...
 
TDC2016POA | Trilha Education - Jogos na Educação, onde estamos errando?
TDC2016POA | Trilha Education -  Jogos na Educação, onde estamos errando?TDC2016POA | Trilha Education -  Jogos na Educação, onde estamos errando?
TDC2016POA | Trilha Education - Jogos na Educação, onde estamos errando?
 
TDC2016POA | Trilha Empreendedorismo - Manual Prático do Empreendedorismo
TDC2016POA | Trilha Empreendedorismo - Manual Prático do EmpreendedorismoTDC2016POA | Trilha Empreendedorismo - Manual Prático do Empreendedorismo
TDC2016POA | Trilha Empreendedorismo - Manual Prático do Empreendedorismo
 
TDC2016POA | Trilha Empreendedorismo - Empreendendo da ideia ao desinvestimento
TDC2016POA | Trilha Empreendedorismo - Empreendendo da ideia ao desinvestimentoTDC2016POA | Trilha Empreendedorismo - Empreendendo da ideia ao desinvestimento
TDC2016POA | Trilha Empreendedorismo - Empreendendo da ideia ao desinvestimento
 
TDC2016POA | Trilha Education - Aprendizagem baseada em projetos: Uma experi...
TDC2016POA | Trilha Education -  Aprendizagem baseada em projetos: Uma experi...TDC2016POA | Trilha Education -  Aprendizagem baseada em projetos: Uma experi...
TDC2016POA | Trilha Education - Aprendizagem baseada em projetos: Uma experi...
 
TDC2016POA | Trilha Education - Design Thinking na Educação: Como aplicar no...
TDC2016POA | Trilha Education -  Design Thinking na Educação: Como aplicar no...TDC2016POA | Trilha Education -  Design Thinking na Educação: Como aplicar no...
TDC2016POA | Trilha Education - Design Thinking na Educação: Como aplicar no...
 

Ähnlich wie Carthage ou cocoapods

Introdução à Programação para iPhone (iOS)
Introdução à Programação para iPhone (iOS)Introdução à Programação para iPhone (iOS)
Introdução à Programação para iPhone (iOS)
Jorge Cardoso
 
Novo Cinto de Utilidades do Desenvolvedor JavaScript, WebAPIs e Open Web
Novo Cinto de Utilidades do Desenvolvedor JavaScript, WebAPIs e Open WebNovo Cinto de Utilidades do Desenvolvedor JavaScript, WebAPIs e Open Web
Novo Cinto de Utilidades do Desenvolvedor JavaScript, WebAPIs e Open Web
Leonardo Balter
 

Ähnlich wie Carthage ou cocoapods (20)

Phonegap - Framework Mobile
Phonegap - Framework MobilePhonegap - Framework Mobile
Phonegap - Framework Mobile
 
Caelum Day In Rio
Caelum Day In RioCaelum Day In Rio
Caelum Day In Rio
 
Phonegap
PhonegapPhonegap
Phonegap
 
PhoneGap
PhoneGapPhoneGap
PhoneGap
 
Android
AndroidAndroid
Android
 
Introdução à Programação para iPhone (iOS)
Introdução à Programação para iPhone (iOS)Introdução à Programação para iPhone (iOS)
Introdução à Programação para iPhone (iOS)
 
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
 
la 02Aula02 introdução phone_gap
la 02Aula02 introdução phone_gapla 02Aula02 introdução phone_gap
la 02Aula02 introdução phone_gap
 
Titanium Mobile - Campus Party Recife 2
Titanium Mobile - Campus Party Recife 2Titanium Mobile - Campus Party Recife 2
Titanium Mobile - Campus Party Recife 2
 
Conhecendo o PhoneGap
Conhecendo o PhoneGapConhecendo o PhoneGap
Conhecendo o PhoneGap
 
Criando aplicações em Android brincando de quebra-cabeça!
Criando aplicações em Android brincando de quebra-cabeça!Criando aplicações em Android brincando de quebra-cabeça!
Criando aplicações em Android brincando de quebra-cabeça!
 
TDC São Paulo 2019 - Vapor
TDC São Paulo 2019 - VaporTDC São Paulo 2019 - Vapor
TDC São Paulo 2019 - Vapor
 
Vapor 3: Reutilizando o model de backend para o seu app.
Vapor 3: Reutilizando o model de backend  para o seu app.Vapor 3: Reutilizando o model de backend  para o seu app.
Vapor 3: Reutilizando o model de backend para o seu app.
 
Android: Conheça o Futuro Inevitável
Android: Conheça o Futuro InevitávelAndroid: Conheça o Futuro Inevitável
Android: Conheça o Futuro Inevitável
 
Aplicativos hibridos-com-ionic-voce-tambem-pode-comecar-a-desenvolver-agora-t...
Aplicativos hibridos-com-ionic-voce-tambem-pode-comecar-a-desenvolver-agora-t...Aplicativos hibridos-com-ionic-voce-tambem-pode-comecar-a-desenvolver-agora-t...
Aplicativos hibridos-com-ionic-voce-tambem-pode-comecar-a-desenvolver-agora-t...
 
Chega de lendas! JavaFX em Android
Chega de lendas! JavaFX em AndroidChega de lendas! JavaFX em Android
Chega de lendas! JavaFX em Android
 
Novo Cinto de Utilidades do Desenvolvedor JavaScript, WebAPIs e Open Web
Novo Cinto de Utilidades do Desenvolvedor JavaScript, WebAPIs e Open WebNovo Cinto de Utilidades do Desenvolvedor JavaScript, WebAPIs e Open Web
Novo Cinto de Utilidades do Desenvolvedor JavaScript, WebAPIs e Open Web
 
Desenvolvendo para Android com PhoneGap
Desenvolvendo para Android com PhoneGapDesenvolvendo para Android com PhoneGap
Desenvolvendo para Android com PhoneGap
 
Workshop - Cordova e Ionic
Workshop - Cordova e IonicWorkshop - Cordova e Ionic
Workshop - Cordova e Ionic
 
Apresentacao android por Júlio Cesar Bueno Cotta
Apresentacao android por Júlio Cesar Bueno CottaApresentacao android por Júlio Cesar Bueno Cotta
Apresentacao android por Júlio Cesar Bueno Cotta
 

Carthage ou cocoapods