iOS framework 制作教程,這次不是靜態包!!!
我們
使用一種變通的方法來制作 iOS
framework,廢話不多說,上步驟:
1.打開Xcode創建一個“ Cocoa Touch Static Library”工程,並刪除現有的target.
2.右鍵project選擇添加New Target,在彈出的窗口中找到Cocoa ,在Cocoa右側窗口中選擇“Loadable Bundle”。
注意:到這步的時候不要選擇 framework,應為 framework是MAC OS上的,iOS是不支持的,但是iOS 支持“Loadable Bundle(cfbundle)”
3.target 上右鍵get Info 在Build Settings下面設置下面的5項內容:
a.搜索Wrapper Extension,把默認的bundle改成 framework.
b.修改Mach-O Type 為Relocatable Object File.
c.關閉Dead Code Stripping ,把勾去掉!
d.關閉Link With Standard Libraries.
e.移除所有關於“AppKit” 和 “Foundation”的參考,刪除“Other Linker Flags”的所有值,並刪除“GCC_PREFIX_HEADER“的值!
4.在frameworks Info.plist文件中將Bundle OS Type code的值BNDL改為:FMWK,並且在target的 get info窗口中的Properties標簽欄下也將Type改為FMWK。
5.在工程中添加你的 代碼。
例如:我們添加一個類
#import <Foundation/Foundation.h>
@interface Help : NSObject {
}
- (void)show;
@end
#import "Help.h"
@implementation Help
- (void)show
{
NSLog(@"framework!!!");
}
@end
6.在target上右鍵Add---New Build Phase---New Copy Headers Build Phase,此時target下面會多出一個灰色的 文件夾—Copy Headers。
7.然后將我們剛才添加的Help類的.h文件從上面拖到下面的Copy Headers中,再在該文件夾上右鍵—Set Role---Public.
8.從上面將所有要打進 framework的.m文件拖到target下的Compile Sources文件夾里。
9.編譯,如果出錯,那就在 Build下面的 將“Other Linker Flags “設置為 –ObjC 、-all_load、-lxml2,不要寫在一起,請一項項添加。
注意:如果編譯出現大量的 錯誤,說明你沒有刪除“AppKit” 和 “Foundation”的參考,
編譯后參考:
在build/Debug-iphonesimulator下面出現一個 framework文件夾:
使用我們剛才制作的 framework
在新的工程中導入 framework
我們把剛才制作的kibernet.framework拷貝到新的工程的目錄下,選擇kibernet.framework文件夾
添加后的效果圖
使用 framework中的類:
導入頭文件
#import "TestFrameworkViewController.h"
#import <Kibernet/help.h>
@implementation TestFrameworkViewController
ViewDid Load中測試一下:
- (void)viewDidLoad{
[super viewDidLoad];
Help * help = [[Help alloc] init];
[help show];
[help release];
}
輸出結果:
1.打開Xcode創建一個“ Cocoa Touch Static Library”工程,並刪除現有的target.
2.右鍵project選擇添加New Target,在彈出的窗口中找到Cocoa ,在Cocoa右側窗口中選擇“Loadable Bundle”。
注意:到這步的時候不要選擇 framework,應為 framework是MAC OS上的,iOS是不支持的,但是iOS 支持“Loadable Bundle(cfbundle)”
3.target 上右鍵get Info 在Build Settings下面設置下面的5項內容:
a.搜索Wrapper Extension,把默認的bundle改成 framework.
b.修改Mach-O Type 為Relocatable Object File.
c.關閉Dead Code Stripping ,把勾去掉!
d.關閉Link With Standard Libraries.
e.移除所有關於“AppKit” 和 “Foundation”的參考,刪除“Other Linker Flags”的所有值,並刪除“GCC_PREFIX_HEADER“的值!
4.在frameworks Info.plist文件中將Bundle OS Type code的值BNDL改為:FMWK,並且在target的 get info窗口中的Properties標簽欄下也將Type改為FMWK。
5.在工程中添加你的 代碼。
例如:我們添加一個類
#import <Foundation/Foundation.h>
@interface Help : NSObject {
}
- (void)show;
@end
#import "Help.h"
@implementation Help
- (void)show
{
NSLog(@"framework!!!");
}
@end
6.在target上右鍵Add---New Build Phase---New Copy Headers Build Phase,此時target下面會多出一個灰色的 文件夾—Copy Headers。
7.然后將我們剛才添加的Help類的.h文件從上面拖到下面的Copy Headers中,再在該文件夾上右鍵—Set Role---Public.
8.從上面將所有要打進 framework的.m文件拖到target下的Compile Sources文件夾里。
9.編譯,如果出錯,那就在 Build下面的 將“Other Linker Flags “設置為 –ObjC 、-all_load、-lxml2,不要寫在一起,請一項項添加。
注意:如果編譯出現大量的 錯誤,說明你沒有刪除“AppKit” 和 “Foundation”的參考,
編譯后參考:

在build/Debug-iphonesimulator下面出現一個 framework文件夾:

使用我們剛才制作的 framework
在新的工程中導入 framework

我們把剛才制作的kibernet.framework拷貝到新的工程的目錄下,選擇kibernet.framework文件夾
添加后的效果圖

使用 framework中的類:
導入頭文件
#import "TestFrameworkViewController.h"
#import <Kibernet/help.h>
@implementation TestFrameworkViewController
ViewDid Load中測試一下:
- (void)viewDidLoad{
[super viewDidLoad];
Help * help = [[Help alloc] init];
[help show];
[help release];
}
輸出結果:
