Xcode多个子工程结合联编开发SDK

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地址

猜你喜欢

转载自blog.csdn.net/weixin_61196797/article/details/130714065
今日推荐