Xcode Workspace - 没有从框架开发pod中找到导入

时间:2017-07-13 07:41:48

标签: ios swift xcode cocoapods podspec

我已经在其中设置了一个包含两个Swift项目的工作区:一个是我正在开发的框架,另一个是框架的演示应用程序。

Podfile如下所示:

platform :ios, '9.0'
workspace 'foo.xcworkspace'

target 'framework' do
    project 'framework.xcodeproj'
end

target :'demo' do
    project 'demo/demo.xcodeproj'
    pod 'framework', :path => 'framework.podspec'
end

.podspec文件如下所示:

Pod::Spec.new do |s|
    s.name         = 'framework'
    s.authors      = { "foo author" }
    s.version      = '0.1.0'
    s.summary      = 'foo summary.'
    s.homepage     = 'foo homepage'
    s.platform     =  :ios, '9.0'
    s.license      = {
        :type => "Proprietary",
        :file => "LICENSE"
    }
    s.source       = {
        :git => 'https://url.to/foo.git',
        :tag => s.version.to_s
    }
    s.source_files = 'framework/framework/**/*.{swift,h,m}'
    s.requires_arc = true
    s.weak_framework = "XCTest"
    s.pod_target_xcconfig = {
        'FRAMEWORK_SEARCH_PATHS' => '$(inherited) "$(PLATFORM_DIR)/Developer/Library/Frameworks"',
    }
end

运行pod install后,Xcode / AppCode仍然无法看到框架项目中的类。因此,如果我在演示应用程序中向类中添加手动导入并尝试编译,则会失败并显示:

  

错误:(13,21)使用未声明的类型'FooClass'

如何正确使用演示应用项目,我需要做什么才能看到框架项目生成的pod中的类?

3 个答案:

答案 0 :(得分:0)

尝试在演示目标上使用inherit! :search_paths 这意味着他们没有获得自己的pod副本,但可以通过头文件看到它们存在。

platform :ios, '9.0'
workspace 'foo.xcworkspace'

target :framework do
    project 'framework.xcodeproj'
end

target :demo do
    inherit! :search_paths
    project 'demo/demo.xcodeproj'
    pod 'framework', :path => 'framework.podspec'
end

未经测试但也许值得一试

答案 1 :(得分:0)

如果您安装了Cocoapod,请不要使用带有.xcodeproj的文件来打开您的项目,而是将新创建的.workspace放在同一个文件夹中。

答案 2 :(得分:0)

我终于解决了这个问题:

  1. 确保分钟。所需的iOS在 Podfile 中定义,例如:

    平台:ios,'10 .0'

  2. 将任何第三方广告连播也添加到 podspec 文件中,例如:

    spec.dependency'Alamofire','〜> 4.5' spec.dependency'Serpent','〜> 1.0'

  3. 如果在没有pod install的情况下执行use_frameworks!,就会搞砸一些事情(请参阅此答案:ld: framework not found Pods)。所以在我之间我得到了这些无效的Pod xconfigs,我必须删除它,然后进行干净的pod安装。

  4. 确保至少构建一次框架项目,然后演示源应该找到对框架pod名称的导入!

  5. 确保所有类都正确添加到目标中,尤其是测试目标中的类不应意外添加到应用目标中。

  6. 毕竟说完了,使用了大量的IDE和开发技术,Xcode和Cocoapods只能被总结成一个意外的巨大集群!