• iOS开发之通过Framework建立项目依赖


    https://www.jianshu.com/p/d146db167bf3

    项目开发时经常会遇到个别模块想打包成framework的情况,传统的打包方式太繁琐,反复测试时很麻烦,不如一个项目管理来得方便。
    这里记录一下用一个Workspace方式管理项目依赖的方式。由于图是两天前截的,按图码字,有疏漏之处还请见谅。

    1.新建Workspace:

    1.1 Xcode -> File -> New -> Workspace并放到Test文件夹下

    2.新建TestProject和FrameworkProject:

    2.1 Xcode -> File -> New -> Project,同样放在Test文件夹下

     
    Test文件夹状态

    2.2 在Xcode中将这两个Project添加到Workspace

     
    Workspace状态

    3.添加Target到FrameworkProject

    3.1 FrameworkProject -> Targets -> [+]

     
    添加Target

    选择Cocoa Touch Framework

     
    选择最下面的Framework

    命名为TestFW,先不要选Embed in App

     
    命名为TestFW

    可以看到Targets下面新增了一个Framework

     
    Targets

    4.添加Framework到TestProject

    4.1 TestProject ->Targets -> General -> Embedded Binaries -> [+]

     
    添加Binaries

    可以看到刚刚生Target的Products已经列了出来,选择TestFW.frameworkiOS

     
    选择framework

    framework嵌入成功

     
    嵌入的framework

    可以看到在Project中也显示出来了,不要在意红色,因为在编译TestProject时会先编译它依赖的framework,这也是这种方法建立项目依赖的方便之处,不需要额外手动编译framework。

     
    嵌入的framework

    如果看着不舒服,可以移动到项目的Frameworks文件夹(Tips:看不到Frameworks文件夹可以先随便嵌入一个系统库,比如UIKit.framework,然后再删掉,就可以看到Frameworks文件夹了)。

     
    移动好的Framework

    4.2 添加测试方法

    这里举例添加方法到ViewController中,注意这是错误演示,下面会说明。

     
    ViewController.h
     
    ViewController.m

    当然不要忘了在暴露的.h中#import "ViewController"

     
    23.png

    运行,发现报错,提示找不到ViewController,导致无法编译framework模块

     
    找不到ViewController

    原来是新增的Target中不包含ViewController这个类。
    解决方法:选择ViewController.h -> TargetMembership -> 勾选TestFW

     
    勾选TestFW

    再次运行,发现helloFramework方法并没有调用,并且控制台输出提示ViewController这个class被两个类文件同时生成了,一个是TestProject项目,一个是TestFW这个framework。

     
    控制台输出

    解决方法:把两个ViewController其中一个改下名字就可以了,这里我把framework中的ViewController改名为TestViewController(当然里面的类名也一定要改啊)。

     
    ViewController改为TestViewController

    可以看到输出正常了。

     
    hello
    [重点] 所以说,自己生成的framework一定要一个特殊的类名前缀,否则很容易和项目中某个类冲突。

    4.3 添加测试类
    当然实际使用时基本不会使用默认的ViewController类,都会自己新建一个或几个类来实现。注意新建类时一定要选择对应的Target,否则就会出现无法编译的问题。

     
    选择TestFW

    自己添加类后,运行,依然报错?找不到helloFramework方法,什么鬼?

     
    找不到方法

    解决方法:FrameworkProject -> Targets -> TestFW -> Build Phases -> Headers,将Project中新增的方法,拖到Public下。否则编译器将新增的方法视为私有的,无法被TestFW.h引用。

     
    移动到Public

    移动后

     
    Public

    至此,就大功告成了。
    当然,这种方法适用于将现有项目简单的打包,如果想从0完全新建framework,那在新建项目时直接选择Cocoa Touch Framework就好,这样会少生成很多AppDelegate之类的文件。

     
    新建framework
  • 相关阅读:
    华为全联接大会2019,共创智能新高度
    CTDC2019首席技术官领袖峰会,AI赋能 智享5G
    2019全球体验设计峰会:体验赋能商业,创造更好体验
    全球闪存峰会旨在深化技术创新,增进闪存产业链上下游
    PyCon 2019火热来袭,与大数据、人工智能等专家一起探讨Python语言
    PHPConChina 2019 PHP开发者大会将于8月在上海举办!
    2019腾讯Live开发者大会(TLC),引领技术新趋势
    2019 HTML5深度应用开发实践
    2019年5G物联网关键技术与应用培训,了解5G网络发展现状及进展
    2019第二届企业云服务大会 -- 企业智变,云化未来
  • 原文地址:https://www.cnblogs.com/sundaysgarden/p/11701666.html
Copyright © 2020-2023  润新知