carthage ou cocoapods
TRANSCRIPT
Cleber Henriques
Technical Leader @ ilegra
[email protected]/cleberhenriques facebook.com/cleber.henriques
iOS Timeline
2007 ‑ Lançamento do iPhone e iPhone OS.2008 ‑ iPhone OS 2 ‑ iOS SDK & App Store2009 ‑ iPhone OS 32010 ‑ iOS 42011 ‑ iOS 5 ‑ CocoaPods2012 ‑ iOS 62013 ‑ iOS 72014 ‑ iOS 8 ‑ Swift & Carthage2015 ‑ iOS 92016 ‑ iOS 10 ‑ Estamos aqui �
"CocoaPods is a dependency manager for Swift and Objective‑C Cocoa projects. It has over23 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 Rubydefault do OSX
Utilizacão
No terminal, vá para a raiz do projeto pod init para criar o PodfileAbrir o PodfileAdicionar as bibliotecas desejadas no PodfileSalvar o Podfile pod install para iniciar a instalação das dependências open App.xcworkspace ‑ A partir de agora você deve utilizar o workspace paratrabalhar!
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ópriadependência.
O nome dela é MapChoices e com ela vai ser possível mostrar em uma UIActionSheet osaplicativos de mapas instalados no iPhone do usuário.
Bora lá...
Criando o projeto com o CocoaPodsNo terminal, execute o seguinte comando:
pod lib create MapChoices
Este comando irá criar o esqueleto do projeto. Basta você ir respondendo algumas perguntas.
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 nossamáquina com o trunk.
pod trunk register [email protected] 'Cleber Henriques' --description='macbook pro'
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 etorná‑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' => '[email protected]' } 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
InstalaçãoAcessar a pagina: https://github.com/Carthage/Carthage/releasesBaixar o arquivo Carthage.pkg Abrir e seguir as instruções na tela.
UtilizaçãoFluxo básico:
Criar o Cartfile: touch Cartfile , que irá listar todas as bibliotecas que você quer ter emseu projeto.No terminal: carthage update .O comando anterior irá baixar e compilar cada biblioteca nas pastas:Carthage/CheckoutsImportar 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ívelpelo Carthage é mais simples do que você pode imaginar.
Passo 4Adicionar 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