[iOS] Création de son propre cocoapod

mercredi 19 août 2015

Dans ce tutoriel, je vais vous expliquer comment créer sa propre librairie avec cocoapods.

Voici ma démarche:

Tout d’abord, il faut créer un projet dans lequel vous faites un pod init afin de créer une workspace dans laquelle vous pouvez inclure les pods nécessaire par exmple à votre librairie pod.

Une fois votre workspace lancée dans Xcode, vous créez votre librairie en insérant des classes .a .m que vous pouvez tester la validité et le fonctionnement dans votre projet.

Ensuite, uniquement les fichiers nécessaire à votre librairie vous les copiez de votre dossier projet vers un dossier que vous créez et nommez Pods sur le bureau
Exécutez ensuite les commandes suivantes

cd /Desktop/<ProjectName>Pods/
pod spec create <ProjectName>

La dernière commande permet de créer le fichier podspec qui contient tous les paramètres de votre pod comme par exemple les infos qui s’afficheront lors de la recherche de votre pods (description,version,etc…) sous /Podspec Metadata/.podspec

La commande suivante permet de valider vos changement dans le fichier podspec et aussi montrer à quoi ressemblera votre pod lors d’un pod search

pod lib lint <ProjectName>.podspec

il est aussi impératif de créer un fichier LICENCE.txt qui contient les conditions de la licence dans le dossier.

Voici un exemple de fichier podspec valide:

#
# Be sure to run `pod lib lint HelloUchrony.podspec' to ensure this is a
# valid spec before submitting.
#
# Any lines starting with a # are optional, but their use is encouraged
# To learn more about a Podspec see http://guides.cocoapods.org/syntax/podspec.html
#

Pod::Spec.new do |s|
s.name             = "<ProjectName>"
s.version          = "0.1.0"
s.summary          = "<ProjectName SUMMARY>"

# This description is used to generate tags and improve search results.
#   * Think: What does it do? Why did you write it? What is the focus?
#   * Try to keep it short, snappy and to the point.
#   * Write the description between the DESC delimiters below.
#   * Finally, don't worry about the indent, CocoaPods strips it!
s.description      = "<ProjectName DESCRIPTION>"
s.homepage         = "http://thiebault.be"
# s.screenshots     = "www.example.com/screenshots_1", "www.example.com/screenshots_2"
s.license          = 'copyright'
s.author           = { "Thiébault Michaël" => "xx@xxxx.be" }
s.source           = { :git => "https://github.com/<GITHUB_USERNAME>/<ProjectName>.git", :tag => s.version.to_s }
# s.social_media_url = 'https://twitter.com/<TWITTER_USERNAME>'

s.platform     = :ios, '7.0'
s.requires_arc = true

s.source_files  = "*.{h,m}"
#s.resource_bundles = {
#'<ProjectName>' => ['Pod/Assets/*.png']
#}

# s.public_header_files = 'Pod/Classes/**/*.h'
# s.frameworks = 'UIKit', 'MapKit'
# s.dependency 'AFNetworking', '~> 2.3'
s.dependency "FlatUIKit", "~> 1.6.2"
end

Il faut maintenant mettre sur git vos sources sans oublié le fichier licence.txt. Et mettre le bon chemin de vos sources git sur le paramètre s.source de votre podspec.

git init
git add --all
git commit -m "First Commit"
git tag '0.0.1'
cd..
git clone --bare nom_projet nom_projet.git
// On le copie ensuite sur le serveur distant.
scp -r nom_projet.git url_git:/chemin_repository
git remote add origin <your git repo (use SSH preferably)>
git push origin --tags

Pas oublié de modifier dans le podspec le girt url dans s.source

s.source = :git => '<your git repo>', :tag => '0.0.1'

On vérifie que tout est en ordre même pour l’accès au git distant

pod spec lint <ProjectName>.podspec

Maintenant, il faudra décider si vous souhaitez rendre votre pod publique ou privé

Voici les commandes pour le rendre privé:

// Ajoute votre repository dans votre cocoapods installation
pod repo add <ProjectName>Pods <your git url>
// Ajoute le podspec dans le repo privé
pod repo push <ProjectName>Pods <ProjectName>.podspec

Voici la commande pour rendre disponible votre librairie publique:

pod trunk push <ProjectName>.podspec

Cliquez ici pour suivre le tutoriel que j’ai suivi.

En résumé, une librairie en publique sera donc accessible pour tout le monde via la commande pod search, et en mode privé, il le rajoute sur votre repo sur votre machine et lorsque vous faites une recherche du pod il recherche sur le repo publique et ensuite sur le repo de la machine. Donc il peut être intéressant que vos sources .a et .m sur git soit utilisable depuis un cocoapods privé car accessible uniquement sur les machines qui ont configuré ce cocoapods privé. Et Par la suite, si vvous ne souhaitez pas que votre code soit visible pour d’autre (opensource) vous pouvez les convertir en exécutable et rendre accessible votre libraire publique pour que d’autre personne ait accès.

Tags: CocoaPods , pod , Xcode