制作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,添加定位權限,添加網絡權限,調用即可.

 

可能會有一些頭文件導入后的文件層級關系的錯誤,  根據自己文件所在位置酌情修改即可.

 

 

!!!!!!!!!!!如果自己framework中使用的其他framework不支持某個架構的話(arm7,arm64等)

首先cd到這個問題framework中,lipo -info frameworkName查看該framework都支持什么架構,如果確實沒有報錯的架構,只能是讓自己的framework也不支持該架構.

到Build Setting中,Architecutres---Architecutres默認的另外添加arm64 或者arm7

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM