Comment définir l'Héritage Swift Version pour chaque Pod en Podfile Xcode 9.0 Swift 3.2 / Swift 4.0
Je suis actuellement en train de mettre de l'héritage dans le Podfile
à SWIFT_VERSION = 2.3
, mais quelques-uns des bibliothèques, je suis en utilisant Swift 3.0, ce qui signifie que j'ai besoin de régler manuellement l'héritage pour tous les Swift 3.0
gousses d'héritage à No
sur chaque pod install
. Comment puis-je configurer chaque pod version dans le Podfile
installateur?
C'est ce que je suis en train d':
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['SWIFT_VERSION'] = '2.3'
end
end
end
Si j'ai mis config.build_settings['SWIFT_VERSION'] = '3.0'
, que nous avons des problèmes avec Swift 2.3
gousses. La meilleure solution est que si nous nous fixons chaque pod version héritée séparément pour éviter d'avoir à le paramétrer manuellement.
Vous devez vous connecter pour publier un commentaire.
J'ai trouvé ceci en cherchant comment définir la SWIFT_VERSION à 3,2 pour Xcode 9.
À l'aide de la AirMapSDK qui elle-même et plusieurs dépendances besoin 3.2 au lieu de 4.0 Voici un exemple de comment mettre de la gousse spécifiques SWIFT_VERSION pour les autres qui peut venir à travers cette question.
Vous pouvez changer le cas de la matrice de spécifier quelle que soit pod, vous devez définir la version trop.
Si vous avez besoin de gérer de multiples Swift versions pour les gousses, vous pouvez construire une cartographie.
Détails
Code Ruby dans podfile
J'ai été en utilisant cette solution dans CocoaPods 1.6.0.la bêta.2 jusqu'à ce que j'ai réalisé que cela ne fonctionne pas pour iOS & tvOS projets. Par exemple, dans un projet à l'aide de PromiseKit
target.name
peut êtrePromiseKit-iOS
ouPromiseKit-tvOS
et il est inutile de vérifier si"PromiseKit"
contient de telles sous-chaîne.Je peux fournir une meilleure solution. Déclarer un hachage avec Swift versions que les clés et les bibliothèques en tant que noms de valeurs:
Utiliser ces fonctions pour vérifier si
target.name
contient une chaîne de caractères comme"PromiseKit"
, mais pas vice-versa:Vous devriez appeler
setup_all_swift_versions
à l'intérieur depost_install
:Ici vous pouvez trouver tous ces extraits de code unifié en un seul bloc de code.
Mise à jour pour cocoapods de 1,7+ si vous avez activé plusieurs xcodeproj génération:
Vous pouvez définir un tableau pour définir Swift version bien pour toutes les gousses à l'intérieur de ce tableau: