Используйте Cocoapod из основного проекта в пакет Swift

#ios #swift #cocoapods #swift-package-manager #podfile

Вопрос:

Я разработал простое Swift Package приложение с UIView , чтобы использовать его в большем количестве проектов.

Мне нужно UIView было использовать a UIImageView , который получает изображение от a URL , и я хочу его использовать SDWebImage .

Я добавил в свою Swift Package Package.swift SDWebImage зависимость as, и она создала Package.resolved корневой каталог, а также добавила Package dependency SDWebImage :

 // swift-tools-version:5.5 // The swift-tools-version declares the minimum version of Swift required to build this package.  import PackageDescription  let package = Package(  name: "MyPacket",  products: [  // Products define the executables and libraries a package produces, and make them visible to other packages.  .library(name: "MyPacket", targets: ["MyPacket"])  ],  dependencies: [  // Dependencies declare other packages that this package depends on.  .package(name: "SDWebImage", url: "https://github.com/SDWebImage/SDWebImage.git", .upToNextMajor(from: "5.0.0"))  ],  targets: [  // Targets are the basic building blocks of a package. A target can define a module or a test suite.  // Targets can depend on other targets in this package, and on products in packages this package depends on.  .target(  name: "MyPacket",  dependencies: [  .product(name: "SDWebImage", package: "SDWebImage")]  )  ] )  

До этого момента все работало хорошо.

В моем main project у меня также есть SDWebImage как pod установленный, а теперь main project рядом MyPacket с Package Dependencies ним он также отображается SDWebImage как зависимость, что означает, что SDWebImage он находится как в Podfile , так и Package Dependencies .

Приложение работает, но оно выдает это предупреждение для каждого SDWebImage method :

 objc[72670]: Class SDWeakProxy is implemented in both /Users/user/Library/Developer/CoreSimulator/Devices/81EA832E-6ED3-4560-8994-298CB8A00D2A/data/Containers/Bundle/Application/B01EFC62-3996-473D-9F8C-6FCCF80BF077/MyMaiProject.app/Frameworks/SDWebImage.framework/SDWebImage (0x10c5cd370)  and /Users/use/Library/Developer/CoreSimulator/Devices/81EA832E-6ED3-4560-8994-298CB8A00D2A/data/Containers/Bundle/Application/B01EFC62-3996-473D-9F8C-6FCCF80BF077/MyMainProject.app/MyMainProject (0x10139aaa0). One of the two will be used. Which one is undefined.  

Вопрос

Есть ли какой-либо способ настроить Podfile , если framework он уже Package Manager включен, чтобы не инициализировать его или удалить SDWebImage из MainProject Package Dependencies него ?

Или posibile использовать то SDWebImage , что установлено в моем MainProject с помощью модулей, в моем Packet , с которым установлено Package Manager ?

Комментарии:

1. Удалить SDWebImage из podfile и добавить с SPM

2. но если я добавлю SDWebImage с SPM , можно ли использовать в My Personal Package с import SDWebImage и так далее?

3. Да, добавьте SPM туда, где вам это нужно. В вашем случае его проект и библиотека