SDK
2019-11-12 本文已影响0人
能能_ios攻城师
SDK-Pro配置流程
创建基本库资源,取名为MySDK
- DynamicFramework形式
File - New - Target - Project - iOS - Coco Touch Framework - StaticFramework形式
File - New - Target - Project - iOS - Coco Touch Framework - .a形式
File - New - Target - Project - iOS - Coco Touch Static Library
配置Xcode
- PROJECT -> MySDK -> Info -> iOS Deployment Target
设置为9.0 系统最低版本支持(按需设置) - PROJECT -> MySDK -> Build Settings -> Build Active Architchture Only 设置为No
- PROJECT -> MySDK -> Build Settings -> Enable BitCode 设置为No
- PROJECT -> MySDK -> Build Settings -> Debug information Format 设置为DWARF
- PROJECT -> MySDK -> Build Settings -> Other Linker Flags 添加 -ObjC
- MySDK -> Edit scheme -> Run -> Info -> Build Configuration 设置为 Release
设置Mach-O Type
TARGETS -> StaticFrameworkMake -> Build Settings -> Mach-O Type (按需设置)
DynamicFramework形式设置为Dynamic Library (默认)
StaticFramework形式设置为Static Library
.a形式默认为Static Library无法更改
公开头文件处理
- TARGETS -> MySDK -> Build Phases -> Headers -> Public 设置公开头文件
其中 MySDK.h 为默认头文件
注意:每设置一个公开头文件,都需要在 MySDK.h 文件导入#import < MySDK/PublicHeader.h>
SDK-Bundle配置流程
创建Bundle,取名为MyBundle
- File - New - Target - macOS - Bundle
配置Xcode
- MyBundle -> Edit scheme -> Run -> Info -> Build Configuration 设置为 Release
- TARGETS -> MyBundle -> Build Settings -> Base SDK 设置为iOS
- TARGETS -> MyBundle -> Build Settings -> Build Active Architchture Only 设置为No
- TARGETS -> MyBundle -> Build Settings -> COMBINE_HIDPI_IMAGES 设置为No
- TARGETS -> MyBundle -> Build Settings -> Enable BitCode 设置为No
- PROJECT -> MyBundle -> Build Settings -> Debug information Format 设置为DWARF
- TARGETS -> MyBundle -> Build Settings -> Skip install 设置为YES(默认)
- TARGETS -> MyBundle -> Build Settings -> Mach-O Type 设置为Bundle(默认)
- TARGETS -> MyBundle -> Build Settings -> Installation Directory 清除路径信息,并删除MyBundle中的plist文件,避免后续上传包的时候出现红色警告错误
- TARGETS -> MyBundle -> Build Settings -> Versioning System 设置为None
除去编译出来的Bundle里面的可执行文件,否则在applicationLoader上传的时候会出现红色警告错误
添加资源到Bundle
- TARGETS -> MyBundle -> Build Phases -> Copy Bundle Resource
添加所需要的资源文件(图片、xib等)
将编译生成的MyBundle,导入到MySDK中
- TARGETS -> MySDK -> Build Phases -> Target Dependencies
添加 MyBundle(如果bundle资源经常改变,就需要配置,建议加上) - TARGETS -> MySDK -> Build Phases -> Copy Bundle Resource
添加 MyBundle - 根据情况,删除MySDK里面多余的资源文件,MyBundle里面已经存在相应资源
注意:此时再次编译MySDK后,发现MyBundle在framework下,需要将其复制或者剪切出来导入到工程中才能正常加载资源显示图片等。
若想让bundle存在于framework中,那么在SDK的代码中引入bundle,改成以下形式://动态库形式 #define kDynamicPath @"Frameworks/MySDK.framework/MyBundle" //静态库形式 //#define kStaticPath @"MySDK.framework/MyBundle" #define kMyBundle [NSBundle bundleWithURL:[[NSBundle mainBundle] URLForResource:kDynamicPath withExtension:@“bundle”]] //获取image实例对象 #define kImageWithImageName(imageName) [UIImage imageNamed:imageName inBundle:kMyBundle compatibleWithTraitCollection:nil]