我已经在其中设置了一个包含两个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中的类?
答案 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)
我终于解决了这个问题:
确保分钟。所需的iOS在 Podfile 中定义,例如:
平台:ios,'10 .0'
将任何第三方广告连播也添加到 podspec 文件中,例如:
spec.dependency'Alamofire','〜> 4.5' spec.dependency'Serpent','〜> 1.0'
如果在没有pod install
的情况下执行use_frameworks!
,就会搞砸一些事情(请参阅此答案:ld: framework not found Pods)。所以在我之间我得到了这些无效的Pod xconfigs,我必须删除它,然后进行干净的pod安装。
确保至少构建一次框架项目,然后演示源应该找到对框架pod名称的导入!
确保所有类都正确添加到目标中,尤其是测试目标中的类不应意外添加到应用目标中。
毕竟说完了,使用了大量的IDE和开发技术,Xcode和Cocoapods只能被总结成一个意外的巨大集群!