iOS - 封装自己的Framework文件,创建、调试、生成文件、打包

最近公司要求将几个第三方的SDK封装成一个公司自己控制的SDK,以前没怎么接触过,所以查了一天资料,大概搞明白是怎么做的了,在这里做个记录。

 

现在开始!

 

一、创建Framework文件:

1.Xcode -> File --> New --> Projict..  -->  Framework & Libaary  --> Cocoa Touch Feamework

2.创建一个类文件来调试

//
//  ShowAccountName.h
//  ShowNameSDK
//
//  Created by SJQ on 2019/6/21.
//  Copyright © 2019 西门依北. All rights reserved.
//

#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN

@protocol ShowAccountNameDelegate <NSObject>

//返回你的姓
- (void)isFinshWithYourFirstName:(NSString *)firstName;

@end

@interface ShowAccountName : NSObject

@property (nonatomic, weak) id <ShowAccountNameDelegate> delegate;

//传入的名字
@property (nonatomic, copy) NSString *accountName;

//打印你的名字
- (void)showNameWithAccount;

@end

NS_ASSUME_NONNULL_END
//
//  ShowAccountName.m
//  ShowNameSDK
//
//  Created by SJQ on 2019/6/21.
//  Copyright © 2019 西门依北. All rights reserved.
//

#import "ShowAccountName.h"

@interface ShowAccountName()

@property (nonatomic, copy) NSString *firstName;

@end

@implementation ShowAccountName

- (void)showNameWithAccount {
    NSLog(@"你的名字:%@",self.accountName);
}

- (void)setAccountName:(NSString *)accountName {
    _accountName = accountName;
    if (self.accountName.length == 0) {
        self.firstName = @"未检测到姓名";
    } else {
        self.firstName = [self.accountName substringToIndex:2];
    }
    
    //触发代理
    if ([self.delegate respondsToSelector:@selector(isFinshWithYourFirstName:)]) {
        [self.delegate isFinshWithYourFirstName:self.firstName];
    }
}

@end

3.配置属性

  •  TAGETS -> Build Settings -> Dead Code Stripping 设置为  NO;
  •  TAGETS -> Build Settings -> Link With Standard Libraries  设置为 NO;
  •  TAGETS -> Build Settings -> Mach-O Type 设置为 Static Library;
  •  增加armv7,armv7s,  TAGETS -> Build Settings -> Architectures -> Architectures 增加 armv7,armv7s
  •  设置Headers  TAGETS -> Build Phases -> Headers  -> Public  把要暴露的.h文件拖到这个目录下

以下是图片示例:

 

 

 

 

 

4.需要在ShowNameSDK.h文件里面添加所创建使用到的 文件头

#import <ShowNameSDK/ShowAccountName.h>

 

二、调试完成的Framework功能

就在刚刚新建的Framework项目里面新建调试Demo,

 

 

然后切换TARGETS里面的项目就好了,调试的时候在 General -> Linked Frameworks and Libraries 下添加 你新建的Feamework文件进行调试。

 

三、生成完整的Framework 文件

1.选中模拟器,运行程序

2.选中真机,运行程序

3.在Finder中找到 Framework 文件

 

 

编译程序会分别编译成两个版本,真机和模拟器,我们要做的就是要把这两个版本合成一个通用的版本,要把framework文件下的 ShowNameSDK合成一个

 

打开终端:

lipo -create  路径1 路径2 -output  新文件路径

路径1 路径2 为上面两个framework文件下的 ShowNameSDK文件路径,新文件路径我是放到桌面上的

然后把生成好的ShowNameSDK文件(注意名字要一样)去替换两个Framework中的一个目录下的ShowNameSDK文件,然后拷贝这个.framework文件,这个.framework就是我们最终要的!

四、打包

打包会出现bug ,我检查了代码发现是生成.framework文件的时候有些配置配错了,下次再遇到再记录

 

 

 

 

 

 

参考资料:

https://www.cnblogs.com/oc-bowen/p/7478461.html

 

posted on 2019-06-21 15:01  麦芽呀~  阅读(1652)  评论(0编辑  收藏  举报