1. 程式人生 > 實用技巧 >製作framework(在自制的framework中引入其他framework)

製作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,新增定位許可權,新增網路許可權,呼叫即可.

可能會有一些標頭檔案匯入後的檔案層級關係的錯誤,  根據自己檔案所在位置酌情修改即可.