Ios Can';我找不到用我的主要应用程序目标构建自己的框架目标的正确方法
我决定将我的主要项目分成两部分,以便在iOS小部件中重用代码 因此,我在我的xcworkspace(cocoa touch框架)中创建了一个新的目标文件。 这两个目标都有一些共同的pod依赖关系,我无法找到正确的构建方法 第一次尝试: 在podfile中,我为两个目标指定了所需的pod,但在构建时,我有多个错误 类Foo在MyApp和MyFramework中都实现。将使用其中一个。哪一个是未定义的 第二次尝试: 然后,我尝试将框架目标放在主应用程序目标中(就像我们通常对测试目标所做的那样) 但是框架将无法构建,因为它没有找到依赖项 例如: 没有这样的模块 注意:Ios Can';我找不到用我的主要应用程序目标构建自己的框架目标的正确方法,ios,swift,xcode,cocoapods,Ios,Swift,Xcode,Cocoapods,我决定将我的主要项目分成两部分,以便在iOS小部件中重用代码 因此,我在我的xcworkspace(cocoa touch框架)中创建了一个新的目标文件。 这两个目标都有一些共同的pod依赖关系,我无法找到正确的构建方法 第一次尝试: 在podfile中,我为两个目标指定了所需的pod,但在构建时,我有多个错误 类Foo在MyApp和MyFramework中都实现。将使用其中一个。哪一个是未定义的 第二次尝试: 然后,我尝试将框架目标放在主应用程序目标中(就像我们通常对测试目标所做的那样) 但
要构建我的主目标,我必须首先构建框架目标,否则它找不到“MyFramework”模块。当我构建主目标时,无法同时构建这两个应用程序?我还有一个应用程序,我在一个单独的项目中创建了一个框架,但工作空间相同。我使用POD获取所有外部库,并通过将自己的框架添加到Xcode中的
嵌入式二进制文件中,将其嵌入到应用程序的目标中。我的播客文件如下所示:
workspace 'MyApp'
abstract_target 'BasePods' do
use_frameworks!
pod 'Alamofire', '~> 4.4'
pod 'PromiseKit', '~> 4.1'
project '../MyAppProject/MyApp/MyApp.xcodeproj'
target 'MyApp'
target 'MyAppDevelopment'
end
target 'MyAppCore' do
use_frameworks!
pod 'Alamofire', '~> 4.4'
pod 'PromiseKit', '~> 4.1'
project '../MyAppProject/MyAppCore/MyAppCore.xcodeproj'
target 'MyAppCoreTests' do
inherit! :search_paths
end
end
我创建了两个单独的pod目标,一个用于应用程序,另一个用于框架。我将它们拆分,因为它们位于不同的目录中 明白了,我有静态库框架依赖项,iOS链接器不支持动态库的静态库依赖项
CF问题:
我已经通过Podfile解决了这个问题,在上一期中发布了一个解决方案:
post_install do |installer|
sharedLibrary = installer.aggregate_targets.find { |aggregate_target| aggregate_target.name == 'Pods-SampleFramework' }
installer.aggregate_targets.each do |aggregate_target|
if aggregate_target.name == 'Pods-SampleApp'
aggregate_target.xcconfigs.each do |config_name, config_file|
sharedLibraryPodTargets = sharedLibrary.pod_targets
aggregate_target.pod_targets.select { |pod_target| sharedLibraryPodTargets.include?(pod_target) }.each do |pod_target|
pod_target.specs.each do |spec|
frameworkPaths = unless spec.attributes_hash['ios'].nil? then spec.attributes_hash['ios']['vendored_frameworks'] else spec.attributes_hash['vendored_frameworks'] end || Set.new
frameworkNames = Array(frameworkPaths).map(&:to_s).map do |filename|
extension = File.extname filename
File.basename filename, extension
end
frameworkNames.each do |name|
puts "Removing #{name} from OTHER_LDFLAGS"
config_file.frameworks.delete(name)
end
end
end
xcconfig_path = aggregate_target.xcconfig_path(config_name)
config_file.save_as(xcconfig_path)
end
end
end
end
我的框架目标没有xcodeproj,当我创建两个pod目标时(参见:在我的帖子中的第一次尝试),xcode说存在重复(在两个目标中实现的类)似乎问题与Firebase有关,它是一个静态库,作为一个动态框架的依赖项,它做得不好
post_install do |installer|
sharedLibrary = installer.aggregate_targets.find { |aggregate_target| aggregate_target.name == 'Pods-SampleFramework' }
installer.aggregate_targets.each do |aggregate_target|
if aggregate_target.name == 'Pods-SampleApp'
aggregate_target.xcconfigs.each do |config_name, config_file|
sharedLibraryPodTargets = sharedLibrary.pod_targets
aggregate_target.pod_targets.select { |pod_target| sharedLibraryPodTargets.include?(pod_target) }.each do |pod_target|
pod_target.specs.each do |spec|
frameworkPaths = unless spec.attributes_hash['ios'].nil? then spec.attributes_hash['ios']['vendored_frameworks'] else spec.attributes_hash['vendored_frameworks'] end || Set.new
frameworkNames = Array(frameworkPaths).map(&:to_s).map do |filename|
extension = File.extname filename
File.basename filename, extension
end
frameworkNames.each do |name|
puts "Removing #{name} from OTHER_LDFLAGS"
config_file.frameworks.delete(name)
end
end
end
xcconfig_path = aggregate_target.xcconfig_path(config_name)
config_file.save_as(xcconfig_path)
end
end
end
end