iOS多工程中子工程依赖pod通过xcconfig文件配置

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS多工程中子工程依赖pod通过xcconfig文件配置相关的知识,希望对你有一定的参考价值。

参考技术A         在业务复杂的APP系统中, 通过多工程实现模块化是一种主流的实现方式.尝试0~1搭建一个多工程Demo.

1.workspace这个概念大家应该都很清楚了。它可以包含多个Project和其他文档文件。

2.project就是一个个的仓库,里面会包含属于这个项目的所有文件,资源,以及生成一个或者多个软件产品的信息。每一个project会包含一个或者多个targets,而每一个target告诉我们如何生产products。project会为所有targets定义了默认的build settings,每一个target也能自定义自己的build settings,且target的build settings会重写project的build settings。

3.Xcode Project文件会包含以下信息,对资源文件的引用(源码.h和.m文件,frame,资源文件plist,bundle文件等,图片文件image.xcassets还有Interface Builder(nib),storyboard文件)、文件结构导航中用来组织源文件的组、Project-level build configurations(Debug\Release)、Targets、可执行环境,该环境用于调试或者测试程序。

4.target会有且唯一生成一个product,它将构建该product所需的文件和处理这些文件所需的指令集整合进build system中。Projects会包含一个或者多个targets,每一个target将会产出一个product。

这里值得说明的是,每个target中的build setting参数继承自project的build settings,一旦你在target中修改任意settings来重写project settings,那么最终生效的settings参数以在target中设置的为准. Project可以包含多个target,但是在同一时刻,只会有一个target生效,可用Xcode的scheme来指定是哪一个target生效。

build setting中包含了product生成过程中所需的参数信息。project的build settings会对于整个project中的所有targets生效,而target的build settings是重写了Project的build settings,重写的配置以target为准。

一个build configaration指定了一套build settings用于生成某一target的product,例如Debug和Release就属于build configaration。

一个Scheme就包含了一套targets(这些targets之间可能有依赖关系),一个configuration,一套待执行的tests。

可以通过配置一个configaration 文件来对应一个target的build setting. 从而来配置对应依赖关系.

我们计划来创建一个多工程Demo. 

需求: 里面包含主工程, pods工程, 以及主工程下面的子工程. 并指定子工程对pods下面库的依赖.

1. 创建xcconfig文件

2. xcconfig文件格式文档

Demo

附言: 手把手教你给一个ios app配置多个环境变量

预告: 下篇-xcconfig具体参数配置详解.

多工程联编的Pods如何设置

多工程联编的Pods如何设置

 (2014-07-17 13:57:10)
标签: 

联编

 

多工程

分类: iOS开发
如今,CocoaPods使用越来越多,几乎每个项目都会使用到。有时候我们的项目可能是有几个模块组成的,每个模块都可以作为一个单独的工程,然后所有的工程都供主工程使用,这就是多工程联编,如何利用pods的Podfile来实现这个功能,下面就为大家提供这种情况下Podfile的写法:

workspace ‘Myworkspace‘

xcodeproj ‘MyApp/MyApp.xcodeproj‘
xcodeproj ‘MySDK1/MySDK1.xcodeproj‘
xcodeproj ‘MySDK2/MySDK2.xcodeproj‘

target :MyApp do
platform :ios, ‘6.0‘
pod ‘AFNetworking‘, ‘~> 2.1.0‘
pod ‘SDWebImage‘, ‘~> 3.4‘
pod ‘FlurrySDK‘, ‘~> 5.0.0‘
xcodeproj ‘MyApp/MyApp.xcodeproj‘
end

target :MySDK1 do
platform :ios, ‘6.0‘
pod ‘AFNetworking‘, ‘~> 2.1.0‘
pod ‘SDWebImage‘, ‘~> 3.4‘
pod ‘FlurrySDK‘, ‘~> 5.0.0‘
xcodeproj ‘MySDK1/MySDK1.xcodeproj‘
end

target :MySDK2 do
platform :ios, ‘6.0‘
pod ‘AFNetworking‘, ‘~> 2.1.0‘
pod ‘SDWebImage‘, ‘~> 3.4‘
xcodeproj ‘MySDK2/MySDK2.xcodeproj‘
end

1. 指定工作区文件名字
2. 声明需要包含进来的所有工程的工程文件相对路径
3. 指明该工程内哪个target需要使用pods功能。一个工程可能有多个target,并不是所有的target都需要pods的第三方库,所以根据需要选择。
4. 指定iOS的版本,需要导入的第三方库(此处又有多种写法,在此不作详述,大家可以到此处去看,比较详细:http://guides.cocoapods.org/syntax/podfile.html#xcodeproj


这样做的前提是,在一个目录下,把需要的工程都建好,然后在各个工程同级目录建Podfile,最后进入Podfile的目录,执行pod install, pods便会帮我们生成Myworkspace文件,用xcode打开Myworkspace文件,所有的工程都已经被导入,设置好项目间的引用关系,就可以开始开发了。

目录结构:
MyApp
    Myworkspace.xcworkspace
    MyApp
    MySDK1
    MySDK2
    Pods
    Podfile
    Podfile.lock
   

以上是关于iOS多工程中子工程依赖pod通过xcconfig文件配置的主要内容,如果未能解决你的问题,请参考以下文章

多工程联编的Pods如何设置

iOS-Pods-XX.debug.xcconfig: unable to open file

目标完整性 - 无法打开文件“Pods-ios.xcconfig”,因为无法解析其路径。它可能会丢失”

【潮汐】iOS给多工程的workspace添加CocoaPods

关于 Flutter IOS混合开发打包Framework集成到原生IOS工程 和 flutter_boost使用

依赖工程开发,编译报错Command Libtool failed with a nonzero exit code