Using Cocoapods in an app extension using a framework

后端 未结 3 1360
滥情空心
滥情空心 2020-12-09 03:14

I have an app (let\'s call it MyApp) written in Swift with the following targets :

  • MyApp : the main target
  • MyAppKit : a targ
相关标签:
3条回答
  • 2020-12-09 03:52

    I don't know you. But for me, it's totally legit and reasonable to have the extension and the host app contain all the pods that a framework defines. And this is what i mean:

    def shared_pods
        pod 'Alamofire'
    end
    
    target 'Framework' do
        shared_pods
    end
    
    target 'Host' do
        shared_pods
        // Some other pods
    end
    
    target 'Extension' do
        shared_pods
    end
    

    I know you are worried about but if you think about it, all those 3rd party frameworks you use, they all have dependencies. You don't have to worries about them because Cocoapods takes care of them for you. If you want to utilise that, then you'll need to put a local pod entry in the list.

    target 'Host' do
        pod Framework, :path => '../Framework'
    end
    

    But then you have to maintain the podspec file.

    0 讨论(0)
  • 2020-12-09 04:02

    This is a swift-3.0 project's profile example.

    platform :ios, '8.0'
    
    def import_public_pods
    
      pod 'SwiftyJSON'
    
    end
    
    
    target 'Demo' do
      use_frameworks!
    
      # Pods for Demo
      import_public_pods 
      pod 'Fabric'
      pod 'Crashlytics'
    
      target 'DemoTests' do
        inherit! :search_paths
        # Pods for testing
      end
    
      target 'DemoUITests' do
        inherit! :search_paths
        # Pods for testing
      end
    
    end
    
    
    target 'DemoKit' do
      use_frameworks!
    
      # Pods for DemoKit
      import_public_pods
      pod 'RealmSwift'
    
      target 'DemoKitTests' do
        inherit! :search_paths
        # Pods for testing
      end
    
    end
    
    0 讨论(0)
  • 2020-12-09 04:12

    So, what gives :

    • My concern of "separating pods between targets" is absurd because you can still import them anywhere.
    • The "you have to manually link" issue is fixed by an easy import RealmSwift statement.

    The fixed and working Podfile therefore is :

    platform :ios, '8.0'
    use_frameworks!
    
    target 'MyApp' do
        pod 'Eureka', '~> 2.0.0-beta'
        pod 'PKHUD', '~> 4.0'
        pod '1PasswordExtension', '~> 1.8'
    end
    
    target 'MyAppKit' do
        pod 'Fuzi', '~> 1.0'
        pod 'RealmSwift', '~> 2.0'
        pod 'Alamofire', '~> 4.0'
        pod 'KeychainAccess', '~> 3.0'
        pod 'Result', '~> 3.0'
    
        target 'MyAppWidget' do
            inherit! :search_paths
        end
    end
    

    And that's it. I would say that the old behaviour was more obvious and didn't require reading up on "podfile target inheritance". I did learn a lot though. Cheers!

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