`
anlulu
  • 浏览: 43560 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

用xcode创建自己的framework

    博客分类:
  • ios
阅读更多

有練習過用 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 的步驟

 

步驟大綱

  1. 下載 OS-Universal-Framework
  2. 結束 Xcode
  3. 安裝 Fake Framework、Real Framework
  4. 新增 Fake Framework 專案
  5. 新增 Single View Application 的專案來使用建立好的 Framework 進行測試

 

1. 下載 OS-Universal-Framework

到 https://github.com/kstenerud/iOS-Universal-Framework 下載 OS-Universal-Framework,

將下載的 zip 解壓縮後,會看到有 Fake Framework、Real Framework 兩個目錄

Image(16)

 

2. 結束 Xcode

安裝完成後,要重啟 Xcode 才會生效,所以直接先把 Xcode 結束掉吧。

 

3. 安裝 Fake Framework、Real Framework

 

安裝 Fake Framework

 

先進入到 Fake Framework 目錄中,會看到 install.sh 這個檔案,執行此檔案來安裝 Fake Framework

     → 開啟「終端機」,進入到 Fake Framework 的目錄下

     → 輸入 sh install.sh 進行安裝動作,

安裝完成結果如下圖:

Fake Framework — bash — 80×36

 

安裝 Real Framework

 

安裝方式跟 Fake Framework 相同,在「終端機」裡切換到 Real Framework 目錄中,輸入 sh install.sh 進行安裝就可以了。

跟 Fake Framework 不同的是,安裝時會問詢問你 Xcode 的安裝路徑、系統管理員密碼,請依照自身的環境進行輸入吧

安裝完成結果如下圖:

Real Framework — bash — 80×64

 

安裝完 Fake Framework、Real Framework 之後,在 Xcode 選擇建立新專案,

就會在的 iOS 裡 Framework & Library 裡看到兩個新增的樣板

Fake Static iOS Framework、Static iOS Framework

沒有的話,請結束你的 Xcode (Quit Xcode),再重新啟動。

Image(17)

 

4. 新增 Fake Framework 專案

 

新增專案

 

在 Xcode 新增一個專案,專案類型選擇 Framework & LIbrary → Fake Static iOS Framework 這個樣板來建立自己的 Framework

專案名稱為 MyFramework01

完成後的結果如下圖:

Image(18)

 

加入測試用的 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 裡。

Xcode

 

設定 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

 

Xcode(1)

Xcode(2)

 

編譯,取得 Framework

 

上述步驟完成後,進行編譯

編譯成功後,點開專案下的 Products 目錄,會看到 MyFramework01.framework ,點選此檔案,按下滑鼠右鍵,選擇 Show in Finder

Xcode(3)

 

從 Finder 會看到如下圖的兩個目錄

Image(19)

 

以下取自網友的說明

來源: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 的專案裡

Finder

 

成功之後,會看到專案下就有我們剛剛建立的 Framework 了

Xcode(4)

 

驗證 Framework 的 Function

 

將我們的 Framework 加到專案後,就開始來測試是否可用

在 ViewController.m 裡加入下列程式

Xcode(5)

 

執行後,成功的接收到從 MyFramework 裡的 sayHello 傳出的字串。

搞定,收工!!

iOS Simulator

 

分享到:
评论

相关推荐

    Xcode13的XCTAutomationSupport.framework文件

    Xcode13作为最新版本,引入了许多新特性和改进,其中包括`XCTAutomationSupport.framework`。这个框架是Xcode自动化测试的重要组成部分,它为开发者提供了强大的工具来自动化UI测试和进行应用的性能评估。 `...

    Xcode8编译xcode9+打包的framework所需FileProvider.framework和IOSurface.framework

    1. **下载框架**:首先,你需要在拥有Xcode 9或更高版本的环境中,创建一个新项目,然后在该项目的“Target” &gt; “General” &gt; “Linked Frameworks and Libraries”部分找到FileProvider.framework和IOSurface....

    Xcode创建和使用iOS的dylib动态库

    总结,Xcode创建和使用iOS的dylib动态库涉及到库的原理、创建过程、使用方法、版本管理、依赖处理以及模板和资源文件的处理等多个方面。熟练掌握这些知识点,可以提升iOS开发的效率和代码质量。通过不断实践和学习,...

    iOS Framework制作打包教程

    创建iOS Framework的第一步是在Xcode中新建一个Framework项目。在Xcode中,你可以选择创建一个Cocoa Touch Framework,这样的Framework是专门为iOS平台设计的。创建过程中,Xcode会自动生成项目结构,包括头文件、...

    Xcode15+Swift+制作XCFramework

    - 用户可以解压后,在Xcode中打开HHTestKit项目,查看其源代码和构建脚本,以学习如何创建自己的XCFramework。 5. **脚本制作**: - 在实际工程中,为了自动化XCFramework的构建过程,开发者通常会编写shell脚本...

    Xcode9.0 FileProvider.framework

    Xcode 9.0中的`FileProvider.framework`是一个关键的开发框架,它为iOS、iPadOS以及macOS应用程序提供了对文件提供者扩展的支持。这个框架在Xcode的较早版本中可能并未包含,因此对于那些需要在低版本Xcode上开发...

    IOS创建静态Framework模板

    IOS创建静态Framework模板,执行后会在xcode生成静态framework模板 因为动态framework的生成需要IOS8.0以上的系统才能支持,否则不能上架,所以在支持IOS7.0或者以下的代码的时候需要使用静态framework 1.确保...

    Xcode14的XCTAutomationSupport.framework文件

    在Xcode 14版本中,`XCTAutomationSupport.framework`是一个重要的组成部分,它提供了自动化测试的支持。 `XCTAutomationSupport`框架是Apple的XCTest测试框架的一部分,专门用于UI自动化测试。这个框架包含了一...

    Xcode8运行时报错,缺少FileProvider.framework文件

    通过这个框架,开发者可以创建自己的文件系统,并与其他应用共享文件,同时保持对文件的控制权。文件提供者可以在用户授权后,让其他应用浏览、搜索、复制或者打开文件,而无需直接访问文件存储位置。这样既保护了...

    swift oc c++混编framework demo

    在Xcode中,可以通过选择"File &gt; New &gt; Target &gt; Cocoa Touch Framework"或"Cocoa Framework"来创建一个新的Framework项目。 6. **编译规则和依赖**:确保所有源文件都被正确地添加到相应的构建阶段,并设置正确的...

    创建framework的工程示例

    `Xcode`是Apple官方的集成开发环境(IDE),用于构建iOS、macOS、watchOS和tvOS应用,同时也支持创建和管理`Framework`。 创建一个`Framework`工程的步骤如下: 1. **启动Xcode**:打开Xcode,选择“File” &gt; ...

    ios创建和使用framework

    1. **创建新项目**:在Xcode中选择“File” -&gt; “New” -&gt; “Target”,然后在弹出的窗口中选择“Cocoa Touch Framework”。输入项目名称,例如"CustomFramework",并确保选择正确的iOS版本和设备目标。 2. **添加...

    Xcode生成动态库和静态库的方法

    1. **新建工程**:使用Xcode创建一个新的工程,通常工程名与库名相同。例如,创建一个名为`FMDB`的静态库,工程名也命名为`FMDB`。 ![使用静态库模板新建工程](使用静态库模板新建工程.png) ![创建的工程](创建...

    xcode如何打包封装

    1. **打开Xcode并创建新工程**:启动Xcode后,在欢迎界面选择“Create a new Xcode project”,或者在菜单栏选择“File” &gt; “New” &gt; “Project”。 2. **选择模板**:在出现的模板列表中,选择“Framework & ...

    Xcode编译静态库方法

    1. **创建静态库项目**:在Xcode中新建一个静态库项目,选择`File &gt; New &gt; Project &gt; iOS &gt; Framework & Library &gt; Static Library`。 2. **编写接口**:在.h文件中定义公共接口,包括方法的参数和返回值,确保外部...

    ios创建framework静态库demo

    在iOS开发中,创建一个Framework静态库是一种常见的方式,它可以帮助开发者封装常用代码,提高代码重用性,并保护知识产权。本篇文章将详细讲解如何通过一个简单的demo来创建一个iOS的静态库。 首先,理解框架...

    xcode 制作静态库

    首先,启动Xcode并选择“File” &gt; “New” &gt; “Project”,在新项目窗口中,定位到“iOS”下的“Framework & Library”类别,选择“Cocoa Touch Static Library”模板,点击“Next”。随后输入项目名称、组织名称等...

    ios使用cmake编译framework

    `add_library`命令创建了一个动态库,`set_target_properties`设置了框架属性,`install`命令指定了安装(构建输出)路径,最后的`add_custom_command`用于生成框架结构,包括复制库文件到framework目录下,并创建一...

Global site tag (gtag.js) - Google Analytics