Swift Package Manager - UIKit Dependency

前端 未结 4 944
旧时难觅i
旧时难觅i 2020-12-15 04:05

I have a Package.swift in my project like:

import PackageDescription

let package = Package(
    name: \"ProjectName\",
        dependencies: [
           .P         


        
相关标签:
4条回答
  • 2020-12-15 04:48

    Use conditional compilation blocks:

    #if canImport(UIKit)
    
    // Code specific to platforms where UIKit is available
    
    #endif
    

    Source: https://developer.apple.com/documentation/xcode/creating_a_swift_package_with_xcode

    0 讨论(0)
  • 2020-12-15 04:52

    The Swift Package Manager builds executables to run on OS X (or Linux); UIKit is a framework in iOS and won't be accessible.

    It may be iOS, tvOS and others become accessible as Swift Package Manager evolves.

    On Dec 4, 2015, at 5:39 PM, Daniel Dunbar (@apple.com) wrote:

    ...

    Right, now we only compile for the host platform (OS X or Linux, currently). Among other things, we currently have no knowledge (or options to choose) what SDK or architecture you are targeting. We also have no mechanisms for specifying what platforms targets are compatible with in the manifest.

    0 讨论(0)
  • 2020-12-15 04:57

    Currently Swift Package Manager has full Xcode support. I was able to get around this error by specifying in my Package.swift manifest that the platform was iOS.

    let package = Package(
        name: "MyPackage",
        platforms: [
            .iOS(.v8)
        ],
    

    Then you can open the Package.swift file in Xcode and it will just work.

    0 讨论(0)
  • 2020-12-15 05:07

    You have to change some swiftc options to build the project against proper sdk and target

    swift build -Xswiftc "-sdk" -Xswiftc "`xcrun --sdk iphonesimulator --show-sdk-path`" -Xswiftc "-target" -Xswiftc "x86_64-apple-ios13.0-simulator"
    
    0 讨论(0)
提交回复
热议问题