iOS 使用 Xcode8 制作动态库及静态库
在使用第三方 SDK 时,经常遇到他们提供的仅仅只有一个动态或静态库,并不能获取源码。使用动态库 FrameWork 或 静态库 Lib,可以满足不想把核心代码的具体实现向使用者展示,又能避免其他人错改动代码。
一、动态库 FrameWork 的制作:
打开 Xcode,选中 Cocoa Touch FrameWork。

新建一个 PublicModel 文件,简单输出Log

若这个 PublicManager 文件想要对外公开头文件。需要

然后编译,得到动态库 FrameWork

到目前为止,一个简单的 FrameWork 就制作完成了。接下来就是使用这个 FrameWork 了。
把 FrameWork 拖进工程。引入 #import <DynamicFrameWorkMake/PublicManager.h>
PublicManager *manager = [[PublicManager alloc] init];
[manager printLog:@"这是一个打印信息"];
编译运行,会发现 引入头文件处有个警告 “Missing submodule 'DynamicFrameWork.PublicManager'”,控制台会报错:

这时需要在 General Embedded Binaries 中添加制作的 FrameWork。

解决“Missing submodule 'DynamicFrameWork.PublicManager”警告的方法是,在编译动态库时,在 DynamicFrameWorkMake.h 文件中,添加 "#import <DynamicFrameWorkMake/PublicManager.h>"

需要注意的是,编译生成的 FrameWork 跟我们所选的编译环境有关,如果你选择的是 模拟器编译出来的,导入时在真机运行会报错的,同时也有 Debug 和 Release 模式之分。
下面可以把真机编译出来的 FrameWork 和 模拟器编译出来的进行合并。

打开终端,输入:
lipo -create + 模拟器目录 + 真机目录 -output 合并后的目录。
eg: lipo -create /Users/Robin/Library/Developer/Xcode/DerivedData/DynamicFrameWorkMake-fafcaqoabyywoqfahbpuzhfcltmd/Build/Products/Debug-iphoneos/DynamicFrameWorkMake.framework/DynamicFrameWorkMake /Users/Robin/Library/Developer/Xcode/DerivedData/DynamicFrameWorkMake-fafcaqoabyywoqfahbpuzhfcltmd/Build/Products/Debug-iphonesimulator/DynamicFrameWorkMake.framework/DynamicFrameWorkMake -output /Users/Robin/Desktop/DynamicFrameWork
如果报错:error: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/lipo: can't move temporary file: /Users/Robin/Desktop/DynamicFrameWork to file: /Users/zhangtibin/Desktop/DynamicFrameWork.lipo (Is a directory)
iOS 使用 Xcode8 制作动态库及静态库的更多相关文章
- IOS开发中制作属于自己的静态库.a、资源库.bundle、.framework
一.什么是库 库实际上是一种代码共享的方式,主要用于代码重用和源码隐藏,通常分为动态库和静态库. 静态库:链接时完整的拷贝至可执行文件中,被多次使用就有多份冗余拷贝. 动态库:链接时不复 ...
- iOS动态库和静态库的运用
概念认识 什么是库 库是共享程序代码的方式,库从本质上来说是一种可执行代码的二进制格式,可以被载入内存中执行.在开发过程中,一些核心技术或者常用框架,出于安全性和稳定性的考虑,不想被外界知道,所以会把 ...
- 【转】iOS动态库和静态库的简要介绍
静态库与动态库的区别 首先来看什么是库,库(Library)说白了就是一段编译好的二进制代码,加上头文件就可以供别人使用. 什么时候我们会用到库呢?一种情况是某些代码需要给别人使用,但是我们不希望别人 ...
- ios 开发中 动态库 与静态库的区别
使用静态库的好处 1,模块化,分工合作 2,避免少量改动经常导致大量的重复编译连接 3,也可以重用,注意不是共享使用 动态库使用有如下好处: 1使用动态库,可以将最终可执行文件体积缩小 2使用动态库, ...
- 技巧:Linux 动态库与静态库制作及使用详解
技巧:Linux 动态库与静态库制作及使用详解 标准库的三种连接方式及静态库制作与使用方法 Linux 应用开发通常要考虑三个问题,即:1)在 Linux 应用程序开发过程中遇到过标准库链接在不同 L ...
- Windows 下VC++6.0制作、使用动态库和静态库
Windows 下VC++6.0制作.使用动态库和静态库 一.VC++6.0制作.使用静态库 静态库制作 1.如图一在VC++6.0中new一个的为win32 static library工程并新建一 ...
- iOS开发——高级篇——换肤、静态库
一.换肤 1.思路1> 解决方案1,使用颜色作为图片素材的命名关键字 问题1:要保证每套图片的文件名 颜色+ 名称.png的格式比较麻烦 问题2:如果要将某一个图片应用到其他皮肤不方便2> ...
- Linux系统中“动态库”和“静态库”那点事儿 /etc/ld.so.conf 动态库的后缀为*.so 静态库的后缀为 libxxx.a ldconfig 目录名
Linux系统中“动态库”和“静态库”那点事儿 /etc/ld.so.conf 动态库的后缀为*.so 静态库的后缀为 libxxx.a ldconfig 目录名 转载自:http://b ...
- Linux系统中“动态库”和“静态库”那点事儿【转】
转自:http://blog.chinaunix.net/uid-23069658-id-3142046.html 今天我们主要来说说Linux系统下基于动态库(.so)和静态(.a)的程序那些猫腻. ...
随机推荐
- STA之RC Corner再论
Q:RC-Corner跟PVT怎么组合? A:通常的组合: Q:通常说的ttcorner指的是啥? A:@孟时光 ttcorner是指管子在tt+RCtyp吧. Typesof corners W ...
- 百炼OJ - 1001 - Exponentiation
题目链接 哇一遍AC的感觉也太爽了吧:) #include <stdio.h> #include <string.h> int times=0; char *myCalc(ch ...
- Python开发中国象棋实战(附源码)
Pygame 做的中国象棋,一直以来喜欢下象棋,写了 python 就拿来做一个试试,水平有限,电脑走法水平低,需要在下次版本中更新电脑走法,希望源码能帮助大家更好的学习 python.总共分 ...
- SQL通过Datatable更新数据库表内容
SQL通过Datatable更新数据库表内容 //要注意的一点是在Select语句中要选择的列中必须包含主键的列,此外不支持多表连接查询 DataTable dt = new DataTable( ...
- Git提交时提示“Please make sure you have the correct access rights and the repository exists.”的解决方法
1.首先打开Git Bash设置名字和邮箱: git config --global user.name "你的名字" git config --global user.email ...
- maven版cxf集合jetty开发服务端(一)
一.首先新建一个maven项目 二.pom.xml引入依赖 <dependency> <groupId>org.apache.cxf</groupId> <a ...
- 极客大挑战 2019 web 部分解
复现环境:buuoj 0x01:Havefun F12查看源码,明显html注释里是一段php get方式传参数,payload:http://f5cdd431-df98-487f-9400-e8d0 ...
- PP Bottle Have High Cycle Times
This year, the participation of 0.1% -0.4% sorbitol nucleating agent in general PP can produce high- ...
- 喵星之旅-狂奔的兔子-centos7安装MySQL 5.5
安装环境:https://www.cnblogs.com/kittybunny/p/12296078.html 一.下载安装文件 下载地址 https://downloads.mysql.com/ar ...
- LAMP调优
1.编译安装httpd前修改: 在安装包目录下 vim include/ap_release.h 搜索:BASEVENDOR 修改其八项隐藏curl -I http://地址 中的Server ...