美文网首页
SDK静态库-Framework开发应用(Swift / OC)

SDK静态库-Framework开发应用(Swift / OC)

作者: 小凡凡520 | 来源:发表于2020-04-14 11:21 被阅读0次
    一、什么是库

    库是程序代码的集合,是共享程序代码的一种方式。我们根据源代码的公开情况,可以将库分为以下2 种类型

    开源库
    公开源代码,我们能看到代码的具体实现,比如 SDWebImage、 AFNetworking等;如何将自己的代码发布到代码托管平台中,然后借助CocoaPods 供别人使用

    闭源库
    不公开源代码,是经过编译后的二进制文件,看不到代码的具体实现。闭源库主要分为:静态库、动态库

    二、基础说明

    SDK包开发是属于组件化范畴。但是这个SDK组件是封装起来的,只是暴露了想暴露或者该暴露的类头文件,功能实现代码只有封装的人才能看到。SDK包的模块功能是独立(因为整个UI界面都封装了),无论嵌入哪种App只要传入正确的参数就能使用,一个SDK包可以相当于一个App程序。

    三、静态库framework制作

    1、新建工程

    这里要选Framework,如果选择右边的Static Library制作出来的是.a静态库

    2856343-248193f711d4240d.png

    2、导入第三方静态库之后再link依赖的系统库,并设置最低运行系统

    20191019094910271.jpg

    3、设置支持的指令集

    20191019095136781.png

    YES
    只会选择编译、链接对应目标设备的指令集。

    NO
    编译、链接会涵盖所有指令集,必要时选择执行对应的指令>集。

    Debug一般设置为YES,执行效率高。
    Release一般为NO,以支持所有可能的架构。

    4、添加armv7s架构(可选)

    TARGETS-MyFramewrok-Build Settings-Architectures-Architectures-other加号,输入armv7s

    201910190950320.png

    模拟器
    4s ~ 5 : i386; 5s以后 : x86_64。

    真机:
    armv6:iPhone1、2、3G;iPod Touch1、2.
    armv7设备:iPhone 3GS、 4、4S;iPad1、2,iPod Touch 3G
    armv7s设备:iPhone 5、5C,iPad4.
    arm64设备:iPhone 5S以后、iPad Air以后

    5、Swift暴露头文件以及方法

    import UIKit
    
    public class TestObj: NSObject {
    
        public func test() {
            print("test")
        }
    }
    

    public :不能被继承
    open:可以被继承

    为了支持OC项目能够使用,类、方法、属性等外部能够调用的,可见性至少要为public,同时还要加上@objc以支持OC调用

    6、OC暴露头文件以及方法

    将你需要暴露的类拖入Public区域


    2856343-aff9310ec972d112.png
    #import <Foundation/Foundation.h>
    
    NS_ASSUME_NONNULL_BEGIN
    
    @interface Person : NSObject
    
    -(void)test;
    
    @end
    
    NS_ASSUME_NONNULL_END
    
    
    
    
    #import "Person.h"
    
    @implementation Person
    
    -(void)test{
        NSLog(@"tets");
    }
    
    @end
    

    7、选择的编译方式

    这是最重要的一步,这一步决定我们制作出来的是静态库还是动态库,默认选择的是Dynamic Library,要手动选择Static Library

    2856343-adced0d84ad41f71.png

    下一步:SDK是打包给别人使用的,编译模式也要改一下:


    2856343-bbcc57e69f6fe287.png 2856343-b43b654273bff475.png 2856343-5feaf409b7a55bb6.png 2856343-b832dfe3a1eba545.png

    8、编译

    command+B,真机和模拟器各编译一次

    有真机选真机,mei没真机就选Build Only Device。模拟器就随便选一个。

    2856343-687d74b0835f8f8f.png

    真机和模拟器都编译成功,product文件夹下的framework会变黑,没有变也没关系,右击framework选择show in finder,弹出文件夹你就能看到真机和模拟器Release状态下的framework包了

    2856343-ae380762350cac39.png 2856343-18ea61af31cce329.png

    9、合并真机和模拟器的SDK包

    2856343-9fbbc936719d8f2e.png 2856343-e00e9d6afd360f04.png

    查看指令集

    lipo -info xxxx/framework_SDK.framework/framework_SDK
    

    10、合并.framework

    lipo -create 真机路径/framework_SDK.framework/framework_SDK   模拟器路径/framework_SDK.framework/framework_SDK -output 真机路径/framework_SDK.framework/framework_SDK
    

    把模拟器的Modules里面的文件拷贝到真机文件夹下的Modules中


    1940927-e7cd763d737fed61.png

    11、合并.a

    lipo -create 真机路径/framework_SDK.framework/framework_SDK   模拟器路径/framework_SDK.framework/framework_SDK -output 真机路径/framework_SDK.framework/framework_SDK
    

    12、使用

    合并替换完就搞定了,得到可用的SDK包。

    2856343-b37baf010b783b89.png

    相关文章

      网友评论

          本文标题:SDK静态库-Framework开发应用(Swift / OC)

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