SlideShare uma empresa Scribd logo
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 
Carthage ou cocoapods
"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.

Mais conteúdo relacionado

PDF
Empreendedori$mo com Android
PDF
Mini curso - Ionic Framework
PPTX
Ionic Framework - Parte 1 - Iniciando um Projeto mais Robusto
PPTX
Ionic Framework
PDF
Hybrid app phonegap angular ionic
PDF
APIs gerenciadas de ponta a ponta - construção
PDF
Ionic Framework - Configuração do ambiente e a criação da primeira APP
PDF
Mini curso: Ionic Framework
Empreendedori$mo com Android
Mini curso - Ionic Framework
Ionic Framework - Parte 1 - Iniciando um Projeto mais Robusto
Ionic Framework
Hybrid app phonegap angular ionic
APIs gerenciadas de ponta a ponta - construção
Ionic Framework - Configuração do ambiente e a criação da primeira APP
Mini curso: Ionic Framework

Destaque (20)

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

Último (7)

DOC
COMO AUTOMATIZR JOGOS SUPER NINTENDO ATRAVES DA PROGRAMAÇÃO
PPTX
Curso de Windows 11 resumido na prática.pptx
DOC
CODIGO PARA AUTOMATIZAR A JOGABILIDADE SUPER MARIO
PDF
Evolução em código: algoritmos genéticos com PHP
PDF
apresentacao introducao computacao ead.pdf
PPTX
Mapeamento de Objeto para Tabela Relacional
PDF
Dos requisitos ao código: como criar código rastreável em PHP
COMO AUTOMATIZR JOGOS SUPER NINTENDO ATRAVES DA PROGRAMAÇÃO
Curso de Windows 11 resumido na prática.pptx
CODIGO PARA AUTOMATIZAR A JOGABILIDADE SUPER MARIO
Evolução em código: algoritmos genéticos com PHP
apresentacao introducao computacao ead.pdf
Mapeamento de Objeto para Tabela Relacional
Dos requisitos ao código: como criar código rastreável em PHP
Anúncio

Carthage ou cocoapods