美文网首页
iOS APP Framework化

iOS APP Framework化

作者: 要留胡子的先生 | 来源:发表于2018-08-23 15:06 被阅读0次

    iOS APP Framework化

    目标:iOSAPP Framework化。

    方法:资源文件打包成bundle,其它逻辑实现封装成framework静态框架。

    准备:

    一个基本功能的APP

    1,将资源文件打包生成bundle

    目标文件:图片等资源文件以及画面XIB

    建立工程:File-> New -> Project -> macOS -> Framework & Library -> Bundle

    拷贝导入资源文件:

    修改项目TARGETS的BaseSDK为iOS:

    至此工程已经建立完毕,编译工程生成.bundle文件

    右键单击.bundle->show in finder便可找到生成的bundle

    2,逻辑实现封装成静态框架

    目标文件:.m .h文件

    建立工程:File-> New -> Project -> iOS -> Framework & Library -> Cocoa Touch Framework

    拷贝导入资源文件:

    添加BundleTools,用来获取我们生成的.bundle里的资源文件

    BundleTools.h

    #import 

    #define BUNDLE_NAME @"MySource"

    @interface BundleTools : NSObject

    + (NSString *)getBundlePath: (NSString *) assetName;

    + (NSBundle *)getBundle;

    @end

    BundleTools.m

    #import "BundleTools.h

    @implementation BundleTools

    + (NSBundle *)getBundle{

     return [NSBundle bundleWithPath: [[NSBundle mainBundle] pathForResource: BUNDLE_NAME ofType: @"bundle"]];

    }

    + (NSString *)getBundlePath: (NSString *) assetName{

     NSBundle *myBundle = [BundleTools getBundle];

     if (myBundle && assetName) {

     return[[myBundle resourcePath] stringByAppendingPathComponent: assetName];

        }

        return nil;

    }

    @end

    修改我们导入的.m文件,添加init和initWithNibName方法使其初始化时候获取bundle里面的资源。

    - (id)init{

     NSBundle *myBundle = [BundleTools getBundle];

     self = [super initWithNibName: [NSString stringWithUTF8String: object_getClassName(self)] bundle: myBundle];

     if (self) {

        }

        return self;

    }

    - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil

    {

     self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];

     if (self) {

        }

        return self;

    }

    至此工程已经建立完毕,编译工程生成.framework文件

    右键单击.framework->show in finder便可找到生成的framework

    3,建立测试工程

    复制导入framework与bundle

    工程TARGETS -> Embedded Binaries -> 添加framework

    建立测试画面,使用framework功能

    至此OS APP Framework化完毕,运行实现效果。

    相关文章

      网友评论

          本文标题:iOS APP Framework化

          本文链接:https://www.haomeiwen.com/subject/guxmiftx.html