[iOS] Création de son propre cocoapod
mercredi 19 août 2015Dans 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
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
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
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.