如何用多Target的方式为SDK创建Demo

2021-04-28  本文已影响0人  LucXion

第一步:项目架构

1. 创建一个全新的工程
2. 创建SDK的target,Xcode会将SDK与Demo关联

创建SDK.png
关联.png

可以删除多余的TestTarget,最终保留两个目标target就可以了


目标.png

第二步:设置关键属性

1. SDK支持的最低iOS版本

搜索关键字ios dep.png
2. SDK支持的CPU指令集
Architectures.png
3. SDK是否只支持当前设备架构
搜索关键字build acti.png
4. SDK编译出来的名称
product name.png
5. SDK编译出来的静态库类型
mach_o.png
6. SDK对外披露头文件
头文件.png

第三步:使用

1. 引入项目
SDKDemo中的使用:
1>. 在SDK内新建文件
2>. 在SDKDemo内导入头文件#import <SDK/Person.h>,即可开始调试,不需要单独编译静态库,也不需要设置对外披露的头文件

在其他项目中使用:
1.> 需要做如下设置,否则会运行会崩溃并提示找不到SDK的资源文件


image.png

2. SDK中引用有C++文件报错

如果静态库中采用ObjectC++实现,或者静态库使用C/C++写的,在调用的时候可能出错,因此需要您保证您工程中至少有一个.mm后缀的源文件(您可以将任意一个.m后缀的文件改名为.mm

3. SDK中使用到了Category

如果framework中使用到了Category 那么在使用framework的工程中要设置 Build Settings中的Other Link Flag 为 -ObjC或者-all_load

第四步:Demo添加第三方依赖库

假设库文件都添加到Frameworks文件中
在demo中修改对应的patch search
Framework Search Paths ->$(PROJECT_DIR)/Product/Frameworks

在SDK中也修改对应的设置为:
$(SRCROOT)/Frameworks

Bundle资源文件

创建

CreatBundle.png

添加资源

资源添加.png

设置

搜索关键字hidpi.png

COMBINE_HIDPI_IMAGES 或 Combine High Resolution Artwork 改为NO,如果为YES,那么在最终打包的Bundle中,@2x和@3x不同分辨率的图片会被合成成tiff格式 。导致使用图片名称无法访问

Enable Bitcode :如果能搜索到这一项那么就把其值设置为NO。Bundle是不能使用Bitcode的

加入SDK
将bundle拖入SDK

NSBundle *bundle = [NSBundle bundleWithPath:[[NSBundle bundleForClass:[self class]] pathForResource:@"StaticSDKResource" ofType:@"bundle"]];
UIImage *imgd = [UIImage imageWithContentsOfFile:[bundle pathForResource:@"line_bg_image@3x" ofType:@"png"]];
// 注意,图片不会自适应屏幕,要自己写方法

混编

将一个完整的 .m/.h
拖入Swift项目,即可自动生成桥接文件,将需要使用的OC头文件在桥接文件中通过OC的头文件引入方式引入,即可使用

常见报错

如果提示 .xcodeproj Building for iOS Simulator, but the linked and embedded framework 'xx.framework' was built for iOS + iOS Simulator.

设置 build ->setting -> Validata Workspace -> YES

上一篇下一篇

猜你喜欢

热点阅读