- .framework静态库依赖第三方开源库,注意这里的开源库是直接将代码拉进工程中,没有采用cocoapods工具;
- 新建.framework静态库工程,命名为
YanZiSDK
,再创建Bundle,命名为YanZiSDKBundle
,相关配置见 iOS架构之路04 -- 静态库.framwork的手动,脚本,资源文件打包 -
YanZiSDK
依赖图片下载框架库SDWebImage
以及第三方SDKYYImgSDK.framework
,将两者分别拖进文件夹ThirdLib
与OtherSDK
,注意不能勾选Add to targets
,如下所示:
Snip20210913_114.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工程命名为
Snip20210914_116.pngYanZiProject
,将YanZiSDK
文件夹直接拖入工程中,然后将文件夹ThirdLib
与OtherSDK
拖入工程,注意要勾选Add to targets
-
工程结构如下:
- 工程配置:
-
Build Setting -> Enable Bitcode
设置为NO; -
最后,引用YanZiSDK,运行工程,如下:
- 注意⚠️:
YanZiSDK.framework
依赖于第三方SDWebImage
和YYImgSDK.framework
,但不会打包进入YanZiSDK.framework
内部,第三方SDWebImage
和YYImgSDK.framework
是主工程YanZiProject
引入的,会打包进入主工程YanZiProject
中;
网友评论