有練習過用 Xcode 建立 Static Library
可是使用此方式要分享 Library 時,還是需要把相關的 header 檔一起夾帶到要用的專案上,其實不是很便利,國外有神人製作了一個 OS-Universal-Framework,安裝完畢後,會在 Xcode 中看到兩個新增的 Framework 樣板,可以使用這兩個樣板來製作自己的 Framework,要使用的話,只要把做好的 Framework 拉到專案下就可以使用了,不用夾帶一堆 header 檔案。
關於 Framework 的詳細資料可以參考對岸網友的 blog (http://gaobusi.iteye.com/blog/1684415),
裡面說明了為何 Xcode 沒有提供 Framework 的原因,以及如何使用 OS-Universal-Framework,
還滿詳細的,有興趣的話,可以先到此 blog 看一下
本文主要是記錄如何使用 OS-Universal-Framework 裡的 Fake Framework 來製作 Framework 的步驟
步驟大綱
- 下載 OS-Universal-Framework
- 結束 Xcode
- 安裝 Fake Framework、Real Framework
- 新增 Fake Framework 專案
- 新增 Single View Application 的專案來使用建立好的 Framework 進行測試
1. 下載 OS-Universal-Framework
到 https://github.com/kstenerud/iOS-Universal-Framework 下載 OS-Universal-Framework,
將下載的 zip 解壓縮後,會看到有 Fake Framework、Real Framework 兩個目錄
2. 結束 Xcode
安裝完成後,要重啟 Xcode 才會生效,所以直接先把 Xcode 結束掉吧。
3. 安裝 Fake Framework、Real Framework
安裝 Fake Framework
先進入到 Fake Framework 目錄中,會看到 install.sh 這個檔案,執行此檔案來安裝 Fake Framework
→ 開啟「終端機」,進入到 Fake Framework 的目錄下
→ 輸入 sh install.sh 進行安裝動作,
安裝完成結果如下圖:
安裝 Real Framework
安裝方式跟 Fake Framework 相同,在「終端機」裡切換到 Real Framework 目錄中,輸入 sh install.sh 進行安裝就可以了。
跟 Fake Framework 不同的是,安裝時會問詢問你 Xcode 的安裝路徑、系統管理員密碼,請依照自身的環境進行輸入吧
安裝完成結果如下圖:
安裝完 Fake Framework、Real Framework 之後,在 Xcode 選擇建立新專案,
就會在的 iOS 裡 Framework & Library 裡看到兩個新增的樣板
Fake Static iOS Framework、Static iOS Framework
沒有的話,請結束你的 Xcode (Quit Xcode),再重新啟動。
4. 新增 Fake Framework 專案
新增專案
在 Xcode 新增一個專案,專案類型選擇 Framework & LIbrary → Fake Static iOS Framework 這個樣板來建立自己的 Framework
專案名稱為 MyFramework01
完成後的結果如下圖:
加入測試用的 Function
為了測試用,在這專案中新增一個名稱為 MyFunction 的 class 檔案,
裡面新增一個簡單的 sayHello Function
程式碼如下:
MyFunction.h
01 |
// |
02 |
// MyFunction.h |
03 |
// MyFramework01 |
04 |
// |
05 |
// Created by alanjiang on 13/2/28. |
06 |
// Copyright (c) 2013年 lab. All rights reserved. |
07 |
// |
08 |
09 |
10 |
#import <UIKit/UIKit.h> |
11 |
12 |
13 |
@ interface MyFunction : NSObject
|
14 |
15 |
16 |
-(NSString *) sayHello; |
17 |
18 |
19 |
@end |
MyFunction.m
01 |
// MyFunction.m |
02 |
03 |
// MyFramework01 |
04 |
05 |
// |
06 |
07 |
// Created by alanjiang on 13/2/28. |
08 |
09 |
// Copyright (c) 2013年 lab. All rights reserved. |
10 |
11 |
// |
12 |
13 |
#import "MyFunction.h" |
14 |
15 |
@implementation MyFunction |
16 |
17 |
-(NSString *) sayHello |
18 |
19 |
{ |
20 |
21 |
return @"這是我自己的 Framework!" ;
|
22 |
23 |
} |
24 |
25 |
@end |
將 header (.h) 檔案設定為 public
TARGETS → Build Phases → Copy Headers
將 Copy Headers 展開後會看見剛剛新增的 MyFunction.h 在 Project 的區塊裡,
把這檔案拖拉到上面的 Public 裡。
設定 Scheme
設定 Scheme 裡的 Run 設定,把 Build Configuration 更改為 Release
注意:沒做此動作的話,在編譯時會出現下面的錯誤訊息
Shell Script Invocation Error
Command /bin/sh failed with exit code 65
The tail of the build logs show this:
=== BUILD NATIVE TARGET Uber OF PROJECT Uber WITH CONFIGURATION Debug ===
Check dependencies
No architectures to compile for (ARCHS=i386, VALID_ARCHS=armv7).
** BUILD FAILED **
The following build commands failed:
Check dependencies
(1 failure)
Command /bin/sh failed with exit code 65
編譯,取得 Framework
上述步驟完成後,進行編譯
編譯成功後,點開專案下的 Products 目錄,會看到 MyFramework01.framework ,點選此檔案,按下滑鼠右鍵,選擇 Show in Finder
從 Finder 會看到如下圖的兩個目錄
以下取自網友的說明
來源:http://gaobusi.iteye.com/blog/1684415
在build目录下有两个文件夹:(yourframework).framework and (your framework).embeddedframework.
如果你的框架只有代码,没有资源(比如图片、脚本、xib、coredata的momd文件等),你可以把(yourframework).framework 分发给你的用户就行了。如果还包含有资源,你必需分发(your framework).embeddedframework给你的用户。
为什么需要embedded framework?因为Xcode不会查找静态框架中的资源,如果你分发(your framework).framework, 则框架中的所有资源都不会显示,也不可用。
一个embedded framework只是一个framework之外的附加的包,包括了这个框架的所有资源的符号链接。这样做的目的是让Xcode能够找到这些资源。
這次新增的 framework 只有程式碼,所以只要需要 MyFramework01.framework 目錄即可
5. 新增 Single View Application 的專案來使用建立好的 Framework 進行測試
新增測試 Framework 的專案
新增一個名稱為 UseMyFramework01 的 Single View Application 的專案
新增 Framework
把剛剛在步驟 4 編譯產生的 MyFramework01.framework,整個拉到 UseMyFramework01 的專案裡
成功之後,會看到專案下就有我們剛剛建立的 Framework 了
驗證 Framework 的 Function
將我們的 Framework 加到專案後,就開始來測試是否可用
在 ViewController.m 裡加入下列程式
執行後,成功的接收到從 MyFramework 裡的 sayHello 傳出的字串。
搞定,收工!!
相关推荐
自己手把手实现IOS framework的创建以及在其它项目中引用(包括开发形式的引用),绝对有保证,有任何问题可咨询我351259738@qq.com
IOS创建静态Framework模板,执行后会在xcode生成静态framework模板 因为动态framework的生成需要IOS8.0以上的系统才能支持,否则不能上架,所以在支持IOS7.0或者以下的代码的时候需要使用静态framework 1.确保...
) 您可以在此阅读有关它的更多用法在Frameworks文件夹下,创建一个以“ framework”命名的文件夹,将该框架的所有源文件放置在此文件夹的根目录下。 打开Makefile ,将文件夹名称添加到LIBS变量的值中(以空格分隔...
1.创建framework项目 2.配置项目打包参数 3.创建测试代码(OC需要把头文件移动到public 中,Swift需要添加open修饰符) 4.创建合并真机和模拟器的合并脚本 5.创建一个测试工程,导入通过我们上面的步骤创建的framework...
Xcode Analytics客户端工具 尝试为Xcode的创建一个CLI工具,该框架为了动力。 如果没有弄清楚如何使用iTunes Connect进行身份验证,这目前几乎没有用。
最近在做Apple的IOS开发,有开发静态库的需求,本身IOS的开发,只允许静态库或者Framework。在Xcode上没有找到允许编译,如同Android上的*.so和Win32上的dll...Xcode New一个新的project,选择IOS下面的Framework&Libr
按教程作的生成framework的工程。
xcode 创建静态库和动态库 1、linux中静态库和动态库区别: 库从本质上来说是一种可执行代码的二进制格式,可以被载入内存中执行。库分静态库和动态库两种。 静态库:这类库的名字一般是libxxx.a;利用静态函数库编译...
将AudioFramework.framework拖到“框架”下的Xcode项目中现在,在“目标”下的项目(不是AudioFramework)中,选择您的主要目标。 在“常规”->“框架,库和嵌入式内容”下,您应该看到AudioFramework.framwork。 ...
此存储库包含 Xcode 项目模板,主要用于简化在 Swift 中创建 µframeworks 的过程。 特征 可以使用.xcworkspace创建框架项目。 可以使用LICENSE文件创建框架项目。 目前只有 MIT 许可证可用。 可以使用.gitignore...
Xcodeproj允许您从创建和修改Xcode项目。 编写无聊的管理任务脚本或构建对Xcode友好的库。 还包括对Xcode工作区( .xcworkspace ),配置文件( .xcconfig )和Xcode方案文件( .xcscheme )的支持。 它在中用于为...
使用Apache Cordova和Framework7创建混合移动应用程序 要求 一般的 npm( ) Android应用程式 Gradle( ) Android Studio( ) 您可以使用Windows上的ChocolateY等软件包管理器或Linux上的任何软件包管理器从源...
从Xcode 11开始,现在Xcode完全支持在Swift中使用和创建二进制框架。 使用新的XCFramework捆绑包类型同时支持设备和模拟器。 XCFrameworks支持Swift和基于C的代码的二进制分发。 单个XCFramework可以包含模拟器和...
使用 GLFW3 和 GLEW 在 OS X Yosemite 上用 C++ 创建 OpenGL 项目的设置代码框架。 所有代码都旨在通过使用 Makefiles(不需要 XCode 或 CMake)从命令行实现完整功能,并结合有用的第三方库,如 GLFW3 和 GLEW。 ...
下载后请用xcode修改自己的ios证书真机运行.flutter代码在PG1.dart里面修改 String androidKey = "b3392bb7fe532b0eb0e2a85ec464e804"; String iosKey = "318e438a3a7e4bec53f45b826b8f7003"; 把这2个变量修改成...
有一天,我发现自己想知道为什么为 iOS 创建一个包含故事板、图形等的“框架”如此复杂。 我在 Xcode App 中找到了 iOS Framework 方法。 尝试以下步骤来创建一个包含框架项目和应用项目的工作区。 框架项目: 在 ...
我是怎么做到的创建一个新的Xcode项目->选择“单一视图应用程序”。 添加一个新目标->选择Cocoa Touch Framework。 运行pod init 。 在Podfile为每个目标添加一些Pod。 运行pod install 。 在UI和框架中实现一些代码...
XcodePackagePackage 是一个标准化的打包工具,初衷是遵循 Apple 开发习惯,全程使用标准流程,帮助开发人员直接生成 SDK 包,同时生成 Podspec ...使用方法使用 Xcode 标准模版创建项目,并设置好相应 Target 参数如果
我在RokkinCat Hack&Tell上介绍了一个由Ionic Framework驱动的Twitter客户端。 这是使用Ionic Framework设置项目的难易程度。 ###开发环境如果您从未使用Node或Ionic进行开发,则必须遵循以下步骤: 安装 安装 ...
style = flat)]( Zearfoss / CBKContacts) CBKContacts尝试创建一个与Contacts.framework兼容的API的通讯录框架,该框架将作为iOS 9的一部分发布。它使用了内部的AddressBook。 此外,CBKContacts完全替代了iOS 8...