ios-sdk静态库framework开发


title: ios-sdk静态库framework开发
categories: Ios
tags: [ios, xcode, 静态库, sdk]
date: 2021-02-01 10:02:13
comments: false
mathjax: true
toc: true

ios-sdk静态库framework开发


前篇

  • iOS-SDK开发经验分享 - https://www.jianshu.com/p/cbb1f54b89d2
  • Unity iOS教程之Xcode打包framework在Unity调用 - https://jingyan.baidu.com/article/9080802204bd19fd91c80f3e.html
  • 包含 Bundle 资源的 framework 的正确打包方式 - https://www.jianshu.com/p/c92c08d8afda
  • xcode6 framework missing submodule xxx 警告 - https://www.cnblogs.com/cocoajin/p/4645446.html

主要是给 unity 开发 ios 插件, 以 framework 的形式集成到 unity 中, 供 unity 调用 ios 原生接口.


头文件引入方式

  1. 创建模块 UnityApi 时会一起创建一个头文件 UnityApi.h, 这个头文件里用来 import 改模块里的需要导出的 头文件, 如

    • UnityApi.h

      #import <UnityApi/UnityPlugin.h>
      #import <UnityApi/Tools.h>
      #import <UnityApi/Model.h>
      #import <UnityApi/Define.h>
      

      即使文件存放有目录层级, 但是 import 的时候是没有目录层级, 只有 <模块/头文件>

  2. 文件引入

    • UnityApi 模块内 引入文件内部文件是用到什么就引入什么

    • UnityApi 模块外 的其他模块, 只需要引入 UnityApi.h 即可


创建 静态 framework

  1. 创建 framework, 如: UnityApi

  2. 编译设置

    点击目标工程 >> 选择你创建的 Framework >> 点击工程设置 >> 做出如下修改

    Build Settings >> Dead Code Stripping >> 设置为NO
    Build Settings >> Strip Debug Symbol During Copy >> 全部设置为NO
    Build Settings >> Strip Style >> 设置为Non-Global Symbols
    Build Settings >> Base SDK >> Latest iOS(iOS 选择最新的)
    Build Settings >>  Link With Standard Libraries >> 设置为 NO
    Build Settings >>  Mach-O Type >> Static Library
    
    对于Mach-O Type有两种情况:1)选择 Static Library 打出来的是静态库;2)选择 Relocatable Object File 打出来是动态库。
    
  3. 编写代码 并 导出头文件

    外部需要访问的头文件需要导出

    在对应的 target 上, 把头文件拖到 public 下

  4. 构建 真机/模拟器 的 framework

    1. 切到 对应的模块 及 要编译的 真机 (any ios devices) or 模拟器

    2. cmd + b 进行构建

      构建成功后在 products 目录下会显示成 白色.

  5. 合并 真机 和 模拟器 的 framework. 命令: lipo -create (如果只是 真机 或 模拟器 其中一个使用, 就不需要合并了, 直接使用 framework)

    $ lipo -create /Users/wilker/Library/Developer/Xcode/DerivedData/Build/Products/Debug-iphoneos/UnityApi.framework/UnityApi /Users/wilker/Library/Developer/Xcode/DerivedData/Build/Products/Debug-iphonesimulator/UnityApi.framework/UnityApi -output UnityApi
    

    • 查看合并后支持的架构

      $ lipo -info UnityApi
      Architectures in the fat file: UnityApi are: armv7 x86_64 arm64 // x86_64 就是 模拟器 支持的架构, armv7 arm64 都是真机支持的架构
      
  6. 然后 选择 真机 (或 模拟器 都行) 导出的 framework

    1. 删除原有的 静态库文件 和 _CodeSignature 目录
    2. 将合并后的 静态库文件 拖入 framework 中. 然后就可以使用这个 framework.


bundle 打包资源

  1. 直接创建一个文件加, 重命名为 res.bundle.

    右键 bundle -> show package contents 可以进入到 bundle 里, 然后就可以往里面拖资源

  2. 将 bundle 拖入项目, 会自动引入 bundle 资源

  3. 加载, 可以无视目录路径, 比如

    UnityApi 模块中加载代码

    +(void)addImgForView:(UIViewController*) ctrl {
       // 方式 1: bundle 内相对路径 (无文件后缀)
        NSString *bundlePath = [[NSBundle mainBundle] pathForResource:@"res" ofType:@"bundle"];
        NSBundle *resourceBundle = [NSBundle bundleWithPath:bundlePath];
        NSString* picPath = [resourceBundle pathForResource:@"pic01" ofType:@"png"];
        // UIImage* img = [UIImage imageWithContentsOfFile:picPath];
        
        // 方式 2: 绝对路径 (有文件后缀)
        UIImage *img = [UIImage imageNamed:@"res.bundle/pic01.png"];
        
        UIImageView *imageV = [[UIImageView alloc]init];
        imageV.frame = CGRectMake(100, 100, 100, 100);
        imageV.backgroundColor = [UIColor greenColor];
        imageV.image = img;
        
        [ctrl.view addSubview:imageV];
    }
    

踩坑

build settings 配置要和 引用这个库的 一致

  • architecures armv7 arm64, 不然报错: one or more
  • ios developement target 9.0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
iOS中引入linphone-sdk可以通过以下步骤: 1. 下载linphone-sdk:可以从linphone官方网站下载最新的linphone-sdk的压缩包。 2. 解压压缩包:将下载的linphone-sdk压缩包解压到目标文件夹中。 3. 创建新的Xcode工程:使用Xcode创建一个新的iOS工程。 4. 导入linphone-sdk到工程中:在Xcode中的工程导航栏中右键点击“Frameworks”文件夹,选择“Add Files to 'Your project name'”选项,然后导航到刚才解压的linphone-sdk文件夹中,选择liblinphone.xcodeproj文件,点击“Add”按钮。 5. 添加依赖库:点击Xcode中的工程导航栏,选择你的项目的target,在General选项卡中,找到“Linked Frameworks and Libraries”部分,点击“+”按钮,选择添加以下依赖库: - libiconv.tbd - libz.tbd - libsqlite3.0.tbd - AudioToolbox.framework - AVFoundation.framework - CoreAudio.framework - CoreVideo.framework - CoreGraphics.framework - CoreMedia.framework - VideoToolbox.framework - UIKit.framework - Foundation.framework - CFNetwork.framework - Security.framework - SystemConfiguration.framework 6. 配置Build Settings:点击Xcode中的工程导航栏,选择你的项目的target,在Build Settings选项卡中,找到“Header Search Paths”部分,添加linphone-sdk的头文件路径。 7. 配置Build Phases:点击Xcode中的工程导航栏,选择你的项目的target,在Build Phases选项卡中,展开“Target Dependencies”部分,点击“+”按钮,选择添加liblinphone iOS库。 8. 添加代码:在需要使用linphone-sdk的地方,引入头文件并编写相应的代码,如初始化linphone对象,注册账号等。 以上就是在iOS中引入linphone-sdk的一般步骤。根据具体情况可能会有一些特殊步骤或配置。了解linphone-sdk的文档和示例代码将有助于更深入地了解如何使用该SDK

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蝶泳奈何桥.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值