Swift iOS module not being deployed to expected debug directory

前端 未结 3 817
心在旅途
心在旅途 2020-12-24 09:33

I have a module/framework written in Swift, intended to be used on iOS. When I try to include the framework in my app, I first notice some red \"not found\" hints in the bui

相关标签:
3条回答
  • 2020-12-24 10:10

    In addition to the above answer which works perfectly on Simulator. On device you will get dyld library not found error and a crash.

    Here is the solution for that:

    In the project that depends on this framework: Under the build settings: Add a copy files phase and add this framework to the 'Frameworks' folder in copy file phase.

    0 讨论(0)
  • 2020-12-24 10:14

    These are slightly modified steps provided by @Mobile Ben

    Assume, you have the following Xcode project structure

    -YourWorkspace
    --YourFramework project
    --YourApp project
    

    step 1. Clear all the targets with Cmd+Shift+K and Cmd+Option+Shift+K (by choosing each of them in the Scheme selector and pressing the hotkey combination)

    step 2. Select YourFramework project.

    step 3. Choose a simulator and build (Cmd+B) YourFramework framework target

    step 4: Choose Generic iOS Device and build (Cmd+B) YourFramework framework target

    step 5: Select YourApp project. Press + in Embedded Binaries and choose the framework under YourFramework project

    step 6: now locate the just added framework in Project Navigator (on the left). In File Inspector (on the right) select location Relative to build product.

    NOTE: I believe the step 6 is required b/c of some bug in Xcode. But, though, not selecting Relative to build product by default might be a deliberate act

    UPD#1: Since Xcode 8.0 (8A218a), step 6 is not needed anymore - the IDE sets Relative to Build Products automatically.

    0 讨论(0)
  • 2020-12-24 10:24

    Okay, so I figured out how to work around this. This assumes you have workspace and you have included the framework as a project in the workspace and you are trying to build a product from another project in the workspace which includes the framework.

    What you need to do is find out where the framework is being built. It's usually some crazy directory under the DeriveData directory. Go to the Finder and find it for the configuration you just tried to build.

    In the product target's General settings, under Embedded Binaries, drag that file into it. This should now place it in the Project Navigator. You should also see it in the Linked Frameworks and Libraries which was underneath Embedded Binaries.

    Go to the Project Navigator and select the file and view it under the File Inspector. There, change the Location to Relative to Build Products.

    In the target's Build Settings, for Framework Search Paths, add $(BUILT_PRODUCTS_DIR) and make that recursive. Delete the entry that was automatically added when you added the framework. It will be an explicit path which has the DerivedData path in it.

    Do a deep clean and delete the DerivedData directory for good measure.

    Build.

    You should now see the framework turn black and it should work properly.

    0 讨论(0)
提交回复
热议问题