製作framework(在自制的framework中引入其他framework)
1.建立iOS Framework工程
首先我們需要建立一個iOS的
CocoaTouch
工程,點選Next,輸入我們Framework的名字即可。下方我們暫且將該Framework的名字命名為MyFramework
。如下所示:
2.設定相容版本
建立完工程後,我們要選擇Deployment Target
, 此處我們選擇的是8.0。也就是說此處我們封裝的SDK所支援的iOS系統版本是iOS8.0+。
3.選擇“靜態庫”
我們建立的framework預設是動態庫,所以我們要講Mach-O Type設定為靜態庫“Static Library”,如下所示。
4.引入原始碼並進行編譯
①這裡我建立的是SayHello類。
.h檔案中
#import <Foundation/Foundation.h> NS_ASSUME_NONNULL_BEGIN @interface SayHello : NSObject - (void)sayHello; @end NS_ASSUME_NONNULL_END
.m檔案中
#import "SayHello.h" @implementation SayHello - (void)sayHello { NSLog(@"hello world"); } @end
下方截圖中是在Build Phases
Headers
中進行設定的。將使用者可以看到的標頭檔案房子Public
中,使用者看不到的放在Project中。如下所示。
將Run更改為release模式,選擇真機編譯完後,在Products
下會生成相應的Framework, 然後通過Show in Finder
進行檢視即可
將framework匯入到新專案中,other link flags 配置-Objc即可呼叫
自定義Framework 報錯 Could not build module
呼叫解決方法:找到buildSetting--Allow Non-modular Includes In Framework Modules 改為YES
將第三方.framework整合到自己的靜態庫裡
調舉個例子,將高德framework整合到自己的靜態庫裡,打包出來
到高德官網下載定位和基礎的兩個framework,下圖示例:
.
雙擊進入,找到AMapFoundationKit, 重新命名為.a檔案,並拖入header資料夾中.將header資料夾改名為AMapFoundation,另外一個framework同理操作
建立framework專案,將AMapFoundation資料夾拖入專案中,匯入高德相關依賴庫
接下來生成framework的操作和上邊操作一樣,編譯過後生成framework.
新建專案,匯入framework,修改release,ios9.0,新增高德依賴庫,新增-Objc,新增定位許可權,新增網路許可權,呼叫即可.
可能會有一些標頭檔案匯入後的檔案層級關係的錯誤, 根據自己檔案所在位置酌情修改即可.