J'ai un fork public d'une bibliothèque qui existe déjà dans CocoaPods/Specs. Dans un Podfile, je peux référencer ce pod fourchu en faisant ceci:
pod 'CoolLibrary', :git => '[email protected]:myname/CoolLibrary-Forked.git', :commit => 'abcdef1234567890abcdef1234567890'
J'ai essayé de mettre ça dans mon MyLibrary.podspec
:
s.dependency 'CoolLibrary', :git => '[email protected]:myname/CoolLibrary-Forked.git', :commit => 'abcdef1234567890abcdef1234567890'
Mais obtenez le message d'erreur suivant:
-> MyLibrary.podspec
- ERROR | The specification defined in `MyLibrary.podspec` could not be loaded.
[!] Invalid `MyLibrary.podspec` file: [!] Unsupported version requirements. Updating CocoaPods might fix the issue.
Est-il possible de spécifier une dépendance dans un .podspec de cette manière (c'est-à-dire pour un pod qui a un podspec, mais qui n'est pas dans CocoaPods/Specs)?
Cela n'est pas autorisé à partir des podspecs, car autoriser ainsi rendrait pratiquement impossible pour les autres podspecs de définir le package dont ils dépendent et/ou d'autres packages pourraient se casser en raison de différences d'API inattendues.
Par exemple, considérez deux pods qui dépendent de AFNetworking, mais l'un spécifie un emplacement de source externe (pod A) tandis que l'autre spécifie uniquement une exigence de version minimale (pod B):
s.dependency 'AFNetworking', :git => 'https://arbitrary/location'
s.dependency 'AFNetworking', '> 2'
Maintenant, il y a quelques problèmes potentiels:
J'espère que cela montre clairement pourquoi nous ne pouvons pas introduire un moyen pour les podspecs de rompre silencieusement les promesses de version. Cependant, à partir de votre Podfile, vous êtes autorisé à remplacer l'emplacement source de tout pod, car c'est l'utilisateur final (le développeur de l'application) qui contrôle et il ne devrait pas y avoir de inattend casse.
Les dépendances sont très simples , n'ayant que la capacité de définir le nom et le spécificateur de version d'un Pod. Ils ne peuvent pas être étendus avec les mêmes extensions qu'une dépendance dans le Podfile.