技术璀璨,初探 framework!

简单介绍下SDK 的三个层次。

业务层 :应用方使用相关API。

衔接层 :保证业务层调用的API不做修改,兼容实现层逻辑。

实现层 :framework ,增加代码的安全性,核心业务的保密。


一、为什么做这个framework?



需求:阿里原有framework包大小为8M(包含的内容比较全面),打包后大概600k,我们需要把整个app的包大小缩减,那么就需要从每个地方去优化。


二、为什么要有衔接层 ?



要修改底层的framework,还要兼顾业务方的调用,那么就需要有这样一个衔接层。不然每次修改framework,业务方就要修改调用的API,会无形的增加业务方的使用成本。


三、为什么要有初始化 ?



最开始的设计思路是,input 一个字符串,output 一个字符串即可。

+ (DDSecurity *)sharedInstance;

/*
 *  input   需要加密的数据
 *  return  签名后字符串
 */
- (NSString *)sign : (NSString *)input;

优化后:

+ (DDSecurity *)sharedInstance;

/*
 *  初始化数据
 */
- (NSInteger )initWithFile;

/*
 *  input   需要加密的数据
 *  return  签名后字符串
 */
- (NSString *)sign : (NSString *)input;

初始化好处:只调用一次,把重复的事情放在初始化里面,这样只需要初始化一次,可以减少内存消耗。


四、iOS 上如何实现 Framework ?



流程参考<和珏猫>的 iOS封装功能生成 .framework ,有详细的介绍。


五、framework 遇到的问题 ?



1.Reason: image not found

 dyld: Library not loaded: @rpath/SecurityGuard.framework/SecurityGuard
 Referenced from: /Users/didi/Library/Developer/CoreSimulator/Devices/
 14A1EFC9-31FD-4FF8-A3A2-64A254FAE27A/data/Containers/Bundle/Application/
 60645B0E-F62C-400B-9AA7-53742B0E0B8C/321321.app/321321
 Reason: image not found

一顿搜索之后发现这个问题得产生是因为引用得一些framework只能存在于高版本得sdk中,但是,如果编译到低版本的ios就会发生这样的问题,我的真机是iOS6的版本的,GameController.framework可能高于这个版本,这里只需要在对应的target下的Build Phases标签里,找到Link Binary With Libraries,在里面找到GameController.framework,把status由Required 修改成Optional,然后再运行就OK了。其他的framework报错也适用,只需要修改对应的framework的status就行了。

2.遇到 Missing submodule 'SecurityGuard.Security'

#import 

//! Project version number for SecurityGuard.
FOUNDATION_EXPORT double SecurityGuardVersionNumber;

//! Project version string for SecurityGuard.
FOUNDATION_EXPORT const unsigned char SecurityGuardVersionString[];

// In this header, you should import all the public headers of your framework using statements like #import 

#import 

在生成framework 过程中,一定要把你用到的库包涵在.h中,不然调用方引用不到。

3.在模拟器5上运行报错,其它模拟器都好使。

在Architectures下增加armv7s,将Build Active Architecture Only 设置为NO。

4.需要用到的两个命令

1.lipo   -create      合并模拟器和真机
2.lipo   -info          查看framework包含的架构

合并输出过程.png
技术璀璨,初探 framework!_第1张图片
查看framework支持的架构.png
六、涉及到的算法 ?



Base64 算法
MD5 算法
异或 算法
SHA1 算法
HmacSHA1 算法
DES 算法

你可能感兴趣的:(技术璀璨,初探 framework!)