Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Carthage ou cocoapods

135 views

Published on

Hey, alguma vez já se pegou na dúvida de quais são as diferenças entre o Cocoapods e o Carthage? Então, nessa palestra vamos aprender a usar cada uma delas para gerenciar as dependências dos nossos projetos, bem como contribuir com a comunidade utilizando as duas ferramentas para distribuir bibliotecas que nós construimos! Bora? :)

Published in: Software
  • Be the first to comment

Carthage ou cocoapods

  1. 1. Carthage ou Cocoapods?
  2. 2. Cleber Henriques Technical Leader @ ilegra cleber.neto@ilegra.com github.com/cleberhenriques  facebook.com/cleber.henriques
  3. 3. Senta que lá vem história...
  4. 4. 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 
  5. 5. "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."
  6. 6. 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
  7. 7. 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!
  8. 8. 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
  9. 9. 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 :)
  10. 10. 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á...
  11. 11. 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.
  12. 12. Esqueleto do projeto:
  13. 13. 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
  14. 14. 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
  15. 15. 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
  16. 16. Carthage
  17. 17. "A simple, decentralized dependency manager for Cocoa"
  18. 18. Instalação Acessar a pagina: https://github.com/Carthage/Carthage/releases Baixar o arquivo  Carthage.pkg  Abrir e seguir as instruções na tela.
  19. 19. 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.
  20. 20. 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
  21. 21. 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.
  22. 22. Passo 1 Criar um projeto de Framework no Xcode:
  23. 23. Passo 2 Adicionar as classes da biblioteca existente no projeto de framework:
  24. 24. Passo 3 Certificar‑se que o esquema está compartilhado:
  25. 25. 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
  26. 26. Agora é só utilizar :) CocoaPods: pod 'MapChoices', '~> 0.1.0' Carthage: github 'OpenCraft/MapChoices' ~> 0.1.0
  27. 27. 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
  28. 28. Concluindo...
  29. 29. Muito obrigado! Essa apresentação foi feita utilizando o Marp.

×