Иван Вавилов Package Manager

Иван Вавилов Package Manager

$ pod install [!] Automatically assigning platform ‘ios’ with version ‘8.0’ because no platform was specified. [!] Your target overrides the ‘OTHER_LDFLAGS’ build settings defined in xcconfig. This can lead to problems with the CocoaPods installation. [!] The dependency ‘Alamofire’ is not used in any concrete target. [!] Pods written in Swift can only be integrated as frameworks [!] Unable to find a specification for ‘Alamofire’. [!] CocoaPods could not find compatible versions for pod ‘Alamofire’: Transport depends on Alamofire (~> 1.0) Mapper depends on Alamofire (~> 2.0) [!] There is a circular dependency between Transport and Mapper Pod installation complete! There are 2 dependencies from the Podfile and 4 total pods installed. $ git log —numstat e123123 83 0 project project.pbxproj commit e123123ccde12313c123e Когда наконец поставил pod-ы Package manager — это не просто curl Иван Вавилов [email protected] Агенда Разновидности менеджеров зависимостей (МЗ) Схема проекта с использованием МЗ Алгоритм работы МЗ Redmadrobot Агенда Разновидности менеджеров зависимостей (МЗ) Схема проекта с использованием МЗ Алгоритм работы МЗ Redmadrobot Разновидности МЗ Операционной системы (системные) Языка Проекта Redmadrobot Как это работает или все зло в деталях Redmadrobot Агенда Разновидности менеджеров зависимостей (МЗ) Схема проекта с использованием МЗ Алгоритм работы МЗ Redmadrobot Схема проекта с использованием Package Manager Код Код проекта Manifest-файл Lock-файл зависимостей Redmadrobot Схема проекта с использованием Package Manager Код Код проекта Manifest-файл Lock-файл зависимостей import Alamofire Redmadrobot Схема проекта с использованием Package Manager Код Код проекта Manifest-файл Lock-файл зависимостей Валидируется статическим анализатором, редактируется пользователем. Redmadrobot Схема проекта с использованием Package Manager Код Код проекта Manifest-файл Lock-файл зависимостей Генерируется из Manifest-файла Redmadrobot Схема проекта с использованием Package Manager Код Код проекта Manifest-файл Lock-файл зависимостей Получаем на основе Lock-файла Redmadrobot Схема проекта с использованием Package Manager Код Код проекта Manifest-файл Lock-файл зависимостей Redmadrobot Схема проекта с использованием Package Manager Код Компилятор/ Код проекта Manifest-файл Lock-файл зависимостей Интерпретатор Redmadrobot Схема проекта с использованием Package Manager Компилятор/ Интерпретатор коммитов История Redmadrobot Схема проекта с использованием Package Manager Создает пользователь Генерируется Код проекта Manifest-файл Lock-файл Код зависимостей Redmadrobot Агенда Разновидности менеджеров зависимостей (МЗ) Схема проекта с использованием МЗ Алгоритм работы МЗ Redmadrobot Работа МЗ 1. Валидация проекта и среды (Analyzer) 2. Построение графа (Resolver) 3. Скачивание зависимостей 4. Интеграция зависимостей 5. Обновление зависимостей Redmadrobot Валидация проекта и среды окружения Redmadrobot RVM > cocoapods Build Settings Код проекта OS X Manifest-файл Redmadrobot source 'https://github.com/CocoaPods/Specs.git' source 'https://github.com/RedMadRobot/cocoapods-specs' platform :ios, '10.0' use_frameworks! project 'Project.xcodeproj' workspace 'Project.xcworkspace' target 'Project' do project 'Project.xcodeproj' pod 'Alamofire' pod 'Fabric' pod 'GoogleMaps' end Redmadrobot source 'https://github.com/CocoaPods/Specs.git' source 'https://github.com/RedMadRobot/cocoapods-specs' platform :ios, '10.0' use_frameworks! project 'Project.xcodeproj' workspace 'Project.xcworkspace' target 'Project' do project 'Project.xcodeproj' pod 'Alamofire' pod 'Fabric' pod 'GoogleMaps' end Redmadrobot source 'https://github.com/CocoaPods/Specs.git' source 'https://github.com/RedMadRobot/cocoapods-specs' platform :ios, '10.0' use_frameworks! project 'Project.xcodeproj' workspace 'Project.xcworkspace' target 'Project' do project 'Project.xcodeproj' pod 'Alamofire' pod 'Fabric' pod 'GoogleMaps' end Redmadrobot source 'https://github.com/CocoaPods/Specs.git' source 'https://github.com/RedMadRobot/cocoapods-specs' platform :ios, '10.0' use_frameworks! project 'Project.xcodeproj' workspace 'Project.xcworkspace' target 'Project' do project 'Project.xcodeproj' pod 'Alamofire' pod 'Fabric' pod 'GoogleMaps' end Redmadrobot source 'https://github.com/CocoaPods/Specs.git' source 'https://github.com/RedMadRobot/cocoapods-specs' platform :ios, '10.0' use_frameworks! project 'Project.xcodeproj' workspace 'Project.xcworkspace' target 'Project' do project 'Project.xcodeproj' pod 'Alamofire' pod 'Fabric' pod 'GoogleMaps' end Redmadrobot Построение графа зависимостей Redmadrobot Ориентированный ацикличный граф C A B E G D F Redmadrobot Алгоритм!!1 Сводится к задаче топологической сортировки Кан – перебор вершин Тарьян - поиск в глубину Демукрон – поиск в ширину Redmadrobot Алгоритм!!1 NP-полная задача Решается за полиномиальное время При общих зависимостях могут использоваться различные стратегии Алгоритм так же используется в компиляторах, AI, ML Redmadrobot Результат решения Manifest-файл Lock-файл Redmadrobot Зависимости наших зависимостей — наши зависимости Redmadrobot Project A B E C F D Redmadrobot Общая зависимость � Project Diamond problem A B E C F D Redmadrobot Стратегия №1 Project A B <=1.0.3 =1.1.1 C-1.0.3 C-1.1.1 Redmadrobot [!] CocoaPods could not find compatible versions for pod ‘Alamofire’: Transport depends on Alamofire (~> 1.0) Mapper depends on Alamofire (~> 2.0) Стратегия №2 Project A B >=1.0.2 1.x C-1.2.0 Redmadrobot Project A B E C F D Redmadrobot [!] There is a circular dependency between B and D Redmadrobot Зависимости наших зависимостей — наши зависимости Redmadrobot Возможные оптимизации? � Параллельные алгоритмы Redmadrobot Возможные оптимизации? � O(log^2(n))* *При использовании полиномиального количества процессоров Redmadrobot Построение графа зависимостей Carthage SwiftPM Redmadrobot Построение графа зависимостей в Carthage typealias DependencyGraph = [Dependency: Set<Dependency>] public enum Dependency { case gitHub(Server, Repository) case git(GitURL) case binary(URL) } bit.ly/2FGnZln Redmadrobot Построение графа зависимостей в Carthage typealias DependencyGraph = [Dependency: Set<Dependency>] enum Dependency { case gitHub(Server, Repository) case git(GitURL) case binary(URL) } bit.ly/2FGnZln Redmadrobot Построение графа зависимостей в Carthage protocol ResolverProtocol { init(versions, dependencies, gitReference) func resolve(dependencies, lastResolved, dependenciesToUpdate) } bit.ly/2IyxpNB Redmadrobot Построение графа зависимостей в SwiftPM struct PackageGraph { public let rootPackages: [ResolvedPackage] public let packages: [ResolvedPackage] public let reachableTargets: Set<ResolvedTarget> public let reachableProducts: Set<ResolvedProduct> public let allTargets: Set<ResolvedTarget> public var allProducts: Set<ResolvedProduct> } bit.ly/2GBaKzK Redmadrobot Построение графа зависимостей в SwiftPM bit.ly/2DyLNBW Redmadrobot Lock зависимостей Manifest-файл Lock-файл Redmadrobot Lock-файл PODS: - Alamofire (4.7.0) - Fabric (1.7.5) - GoogleMaps (2.6.0): - GoogleMaps/Maps (= 2.6.0) - GoogleMaps/Base (2.6.0) - GoogleMaps/Maps (2.6.0): - GoogleMaps/Base SPEC CHECKSUMS: Alamofire: 907e0a98eb68cdb7f9d1f541a563d6ac5dc77b25 Fabric: ae7146a5f505ea370a1e44820b4b1dc8890e2890 GoogleMaps: 42f91c68b7fa2f84d5c86597b18ceb99f5414c7f PODFILE CHECKSUM: 5294972c5dd60a892bfcc35329cae74e46aac47b COCOAPODS: 1.4.0 Redmadrobot Lock-файл PODS: - Alamofire (4.7.0) - Fabric (1.7.5) - GoogleMaps (2.6.0): - GoogleMaps/Maps (= 2.6.0) - GoogleMaps/Base (2.6.0) - GoogleMaps/Maps (2.6.0): - GoogleMaps/Base SPEC CHECKSUMS: Alamofire: 907e0a98eb68cdb7f9d1f541a563d6ac5dc77b25 Fabric: ae7146a5f505ea370a1e44820b4b1dc8890e2890 GoogleMaps: 42f91c68b7fa2f84d5c86597b18ceb99f5414c7f PODFILE CHECKSUM: 5294972c5dd60a892bfcc35329cae74e46aac47b COCOAPODS: 1.4.0 Redmadrobot Lock-файл PODS: - Alamofire (4.7.0) - Fabric (1.7.5) - GoogleMaps (2.6.0): - GoogleMaps/Maps (= 2.6.0) - GoogleMaps/Base (2.6.0) - GoogleMaps/Maps (2.6.0): - GoogleMaps/Base SPEC CHECKSUMS: Alamofire: 907e0a98eb68cdb7f9d1f541a563d6ac5dc77b25 Fabric: ae7146a5f505ea370a1e44820b4b1dc8890e2890 GoogleMaps: 42f91c68b7fa2f84d5c86597b18ceb99f5414c7f PODFILE CHECKSUM: 5294972c5dd60a892bfcc35329cae74e46aac47b COCOAPODS: 1.4.0 Redmadrobot Lock-файл PODS: - Alamofire (4.7.0) - Fabric (1.7.5) - GoogleMaps (2.6.0): - GoogleMaps/Maps (= 2.6.0) - GoogleMaps/Base (2.6.0) - GoogleMaps/Maps (2.6.0): - GoogleMaps/Base SPEC CHECKSUMS: Alamofire: 907e0a98eb68cdb7f9d1f541a563d6ac5dc77b25 Fabric: ae7146a5f505ea370a1e44820b4b1dc8890e2890 GoogleMaps: 42f91c68b7fa2f84d5c86597b18ceb99f5414c7f PODFILE CHECKSUM: 5294972c5dd60a892bfcc35329cae74e46aac47b COCOAPODS: 1.4.0 Redmadrobot Lock-файл PODS: - Alamofire (4.7.0) - Fabric (1.7.5) - GoogleMaps (2.6.0): - GoogleMaps/Maps (= 2.6.0) - GoogleMaps/Base (2.6.0) - GoogleMaps/Maps (2.6.0): - GoogleMaps/Base SPEC CHECKSUMS: Alamofire: 907e0a98eb68cdb7f9d1f541a563d6ac5dc77b25 Fabric: ae7146a5f505ea370a1e44820b4b1dc8890e2890 GoogleMaps: 42f91c68b7fa2f84d5c86597b18ceb99f5414c7f PODFILE CHECKSUM: 5294972c5dd60a892bfcc35329cae74e46aac47b COCOAPODS: 1.4.0 Redmadrobot Скачивание зависимостей Код Lock-файл Зависимостей Redmadrobot Скачивание зависимостей Безопасность Централизация Redmadrobot Скачивание зависимостей Безопасность Централизация Redmadrobot Безопасность Redmadrobot Homebrew HOMEBREW_NO_INSECURE_REDIRECT Проверка устаревшей версии curl (OS X ≤ 10.8) Хэш SHA256 для файла по http bit.ly/2pph45i bit.ly/2GKUKLP Redmadrobot Carthage guard binaryURL.scheme == "file" || binaryURL.scheme == "https" else {

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    93 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us