Xcode版本:Version 14.3 (14E222b)
这是啥?
chat:
Xcode 多个子工程结合联编可以用于开发 SDK,这种开发方法是在一个主工程中包含多个子工程,每个子工程代表 SDK 中不同的模块,每个子工程都可以独立编译。通过在主工程中设置这些子工程作为依赖项,自动将所有子工程编译成一个完整的SDK框架,从而方便SDK的使用。
使用多个子工程可以简化开发流程和管理,通过独立的子工程,可以分别测试和调试子部件,易于单元测试和代码维护。而通过联编这些子工程,可以将每个模块的工程合并成一个大的二进制文件,而不是需要单独的库。
这种方法可以极大的提高开发效率,也可以降低维护成本,特别是在团队开发中很实用。
大概意思就是说我们在写项目的时候,比如我们要写一个教务系统,有教师端和学生端两个不同端口,但是他们之间有很多功能都是重复的,为了减少工作量,我们可以使用多个子工程联合开发SDK。它可以让我们在一个项目里调用另一个项目的东西
新建一个Workspace
打开Xcode,File->new->Workspace
给它起个名,我叫它MyWorkspace。
然后把它存在自己想要的位置上,我把它存在了桌面上。
桌面就多出来了我刚才创建的东西
给Workspace里面加项目
第一种方法,直接在workspace里创建一个项目
我们打开刚才创建的Workspace
File->new->project
给他起个名
注意把它Add to:MyWorkspace
Group:MyWorkspace
然后在刚才的MyWorkspace文件里就能看到我新建的MyAppOne
第二种方法,创建一个project然后将它添加到MyWorkspace中
打开Xcode->File->new->Project->iOS->App
给他起个名
然后创建它,打开它
然后打开我们的MyWorkspace
File->Add File To…
然后选择我们刚才创建的工程的.xcodeproj
自定义一个SDK工程添加到Workspace,实现联编
打开Myworkspace->File->new->project
选择iOS->Staci Library
给他起个名,我起了MySDK
然后Add to:MyWorkspace
Group:MyWorkspace
然后我们就能看到三个不同的项目在一个Workspace里了
如何使用?
比如我们现在的AppOne要用到MySDK里面的东西
先给MySDK里写一个方法
//
#import <Foundation/Foundation.h>
@interface MySDK : NSObject
- (void)MyFristSDKAction;
@end
#import "MySDK.h"
@implementation MySDK
- (void)MyFristSDKAction {
NSLog(@"MyFristSDKAction~~~~~~~~~~~~~~");
}
@end
将MySDK的.a文件添加到MyAppOne中
MyAppOne->General->Frameworks,Libraries,and Embedder Content
点击+
选择libMySDK.a
然后可以看到这个东西已经被添加进来了
设置Build Settings里面的Library Search Paths路径
MyAppOne->Build Settings->All
搜索sea
这个就是需要的东西
我们需要在Library Search Paths和User Header Search Paths中添加东西
点击这一行,然后出现了一个加号,然后点击加号
将MySDK.h的路径粘贴上去
User Header Search Paths也是一样
如下就是添加成功了
使用它
我现在在AppOne的ViewController里试试使用它
//
#import "ViewController.h"
#import <MySDK/MySDK.h>
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
MySDK *sdk = [[MySDK alloc] init];
[sdk MyFristSDKAction];
// Do any additional setup after loading the view.
}
@end
我们运行MyAppOne试试
可以看到在AppOne里成功调用了MySDK里的东西
git地址