(使用xmpp)静态framework的使用

上一份博客已经说过动态framework使用,除了需要link,还需要工程配置的general配置项中embeded binary library将动态framework加入,

而静态库使用与动态库有所区别:

由于xmpp库中含有类别(category),所以需要修改编译选项Other Linker Flags设为“-ObjC”

另外"_dns_free_resource_record"这样的错误,是由于缺少库:添加libresolv.dylib库,就可以了。


这样引入静态sdk已经没问题了,但是运行起来还会找不到xmpp的coredata数据库文件,因为framework里面虽然有,但是xcode并没有加载,所以需要手动配置,首先将这些coredata数据库文件打包到一起为bundle,然后再引入工程即可。


1. 创建bundle

创建工程,然后注意选择os X的工程才能看到bundle


2. 添加资源文件到bundle
编译第一步的工程将得到一个bundle文件,其实就是一个文件夹,把xmpp库生成的momd数据库文件拖到bundle里面即可。
3. 修改xmpp底层代码
由于xmpp默认是从自己的bundle中按照类名加载momd文件,而静态framework虽然内部有momd文件,但是无法默认加载,需要手动加载,这时可以修改xmpp内部代码,改为加载bundle中的mom文件,主要修改下面这行:

- (NSBundle *)managedObjectModelBundle

{

    return [NSBundle bundleWithClass:[self class]];

}

修改为

- (NSBundle *)managedObjectModelBundle

{

    NSString *resourceBundle = [[NSBundle mainBundle] pathForResource:@"bundle文件名" ofType:@"bundle"];

    NSBundle *bundle = [NSBundle bundleWithPath:resourceBundle];

    return bundle;

}

这样将编译得到的静态库和bundle一起引入想要使用这个sdk的应用工程中即可。


猜你喜欢

转载自blog.csdn.net/mingming24/article/details/46595483