首页 技术 正文
技术 2022年11月13日
0 收藏 466 点赞 3,388 浏览 2215 个字

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

  一、动态库 FrameWork 的制作:

  打开 Xcode,选中 Cocoa Touch FrameWork。

  iOS 使用 Xcode8 制作动态库及静态库

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

  iOS 使用 Xcode8 制作动态库及静态库

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

  iOS 使用 Xcode8 制作动态库及静态库

  然后编译,得到动态库 FrameWork

  iOS 使用 Xcode8 制作动态库及静态库

  到目前为止,一个简单的 FrameWork 就制作完成了。接下来就是使用这个 FrameWork 了。

  把 FrameWork 拖进工程。引入 #import <DynamicFrameWorkMake/PublicManager.h>

PublicManager *manager = [[PublicManager alloc] init];
[manager printLog:@"这是一个打印信息"];

  编译运行,会发现 引入头文件处有个警告 “Missing submodule ‘DynamicFrameWork.PublicManager’”,控制台会报错:

  iOS 使用 Xcode8 制作动态库及静态库

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

  iOS 使用 Xcode8 制作动态库及静态库

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

  iOS 使用 Xcode8 制作动态库及静态库

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

  下面可以把真机编译出来的 FrameWork 和 模拟器编译出来的进行合并。

  iOS 使用 Xcode8 制作动态库及静态库

  打开终端,输入:

  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)

  

  

<!–
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 22.0px Times; color: #e44347}
span.s1 {font-variant-ligatures: no-common-ligatures; color: #d28f5a}
span.s2 {font-variant-ligatures: no-common-ligatures}
–>
<!–
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 22.0px Times; color: #e44347}
span.s1 {font-variant-ligatures: no-common-ligatures; color: #d28f5a}
span.s2 {font-variant-ligatures: no-common-ligatures}
–>
<!–
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #000000; background-color: #ffffff}
span.s1 {font-variant-ligatures: no-common-ligatures}
–>
<!–
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #000000; background-color: #ffffff}
span.s1 {font-variant-ligatures: no-common-ligatures}
–>

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,117
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,589
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,435
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,206
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,842
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,927