iOS架构之路08 -- .framework静态库依赖(第三方SDK、开源库、资源包)

  • .framework静态库依赖第三方开源库,注意这里的第三方开源库直接将代码拉进工程中,没有采用cocoapods工具;
  • 新建.framework静态库工程,命名为YanZiSDK,再创建Bundle,命名为YanZiSDKBundle,相关配置见 iOS架构之路04 -- 静态库.framwork的手动,脚本,资源文件打包
  • YanZiSDK依赖图片下载框架库SDWebImage以及第三方SDKYYImgSDK.framework,将两者分别拖进文件夹ThirdLibOtherSDK,注意不能勾选Add to targets,如下所示:
    Snip20210913_114.png
  • 工程结构如下:
image.png
  • 其中SFViewController.m文件中,引用SDWebImage第三方库,代码如下:
#import "SFViewController.h"
#import "UIImageView+WebCache.h"

@interface SFViewController ()

@property(nonatomic,strong)UIImageView *im;

@end

@implementation SFViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    self.view.backgroundColor = [UIColor whiteColor];
    
    NSBundle *bundle = [NSBundle bundleWithPath:[[NSBundle mainBundle] pathForResource:@"MyCategoryBundle" ofType:@"bundle"]];
    NSString *path = [[bundle resourcePath] stringByAppendingPathComponent:@"sf_navBack_hl"];
    
    self.im = [[UIImageView alloc]initWithFrame:CGRectMake(100, 100, 100, 100)];
    self.im.image = [UIImage imageWithContentsOfFile:path];
    [self.view addSubview:self.im];
    
    NSString *urlString = @"https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fn.sinaimg.cn%2Fsinacn%2Fw640h736%2F20180129%2F1c2d-fyqzcxh8593608.jpg&refer=http%3A%2F%2Fn.sinaimg.cn&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1634115541&t=a21cc2b149a3633837aba436cc62fe38";
    [self.im sd_setImageWithURL:[NSURL URLWithString:urlString]];
}

@end
  • 然后在真机,模拟器下分别进行编译,最后将得到的YanZiSDK文件进行合并,然后导出真机编译的YanZiSDK.framework,将其中的YanZiSDK文件替换为合并的YanZiSDK文件,在桌面上创建YanZiSDK文件夹,然后将YanZiSDK.framework与YanZiSDKBundle拷贝进去;

  • 新建一个Demo工程命名为YanZiProject,将YanZiSDK文件夹直接拖入工程中,然后将文件夹ThirdLibOtherSDK拖入工程,注意要勾选Add to targets

    Snip20210914_116.png

  • 工程结构如下:

image.png
  • 工程配置:
image.png
  • Build Setting -> Enable Bitcode 设置为NO;

  • 最后,引用YanZiSDK,运行工程,如下:

image.png
  • 注意⚠️:YanZiSDK.framework依赖于第三方SDWebImageYYImgSDK.framework,但不会打包进入YanZiSDK.framework内部,第三方SDWebImageYYImgSDK.framework是主工程YanZiProject引入的,会打包进入主工程YanZiProject中;

你可能感兴趣的:(iOS架构之路08 -- .framework静态库依赖(第三方SDK、开源库、资源包))