Xcode7 製做通用的framework(轉)

 
分類:

1.新建一個靜態庫工程.

file→ new→ project, 彈出框中選擇iOS→ framework & library中的cocoa touch static library.點擊Next,輸入product name: TestFramework, 點擊Next→ 點擊Create.android

2.刪除嚮導所生成工程中的Target.ios

點擊工程名→ 點擊TARGETS → 右鍵Delete.xcode

3.增長一個新的Target.app

點擊Target底部的"+"號,彈出框中選擇OS X→ Framework & Library中的Bundle.點擊Next,輸入product name TestFramework, 點擊Finish.iphone

4.修改新建 Target 的 Building Settings 項.post

a: 選中TARGET→ Build Settings項, 將Architectures→ Base SDK 改成Latest iOS(iOS 9.0), 將Architectures 改成 $(ARCHS_STANDARD);ui

b: 在 Deployment項, 選中"Mac OS X Deployment Target", 點擊鍵盤上的Delete鍵, 將「Targeted Device Family」改爲"1,2";spa

c: 在 (null) - Deployment項, 修改"iOS Deployment Target"爲"6.0",同時修改PROJECT的info下的Deployment Target → "iOS Deployment Target"爲"6.0";.net

d: 在Linking項, 將"Dead Code Stripping" 改成"NO", "Link With Standard Libraries" 改成 "NO", 將 "Mach-O Type" 改成"Relocatable Object File";日誌

f: 在Packing項, 將"Wrapper Extension" 改成 "framework";

5.修改 Target 的 Info 項.

點擊Info, 將 "Bundle OS Type code" 改成 "FMWK"

6.將要寫入靜態庫的源碼文件拖入工程目錄, 這裏以一個簡單的語句輸出做爲例子

Command+N 新建一個cocoa Touch class, 名字爲TestLog, 點擊Next, 點擊create;

TestLog.h代碼以下:

 

[objc] view plain copy 在CODE上查看代碼片派生到個人代碼片
  1. <span style="font-size:14px;">#import <Foundation/Foundation.h>  
  2.   
  3. @interface TestLog : NSObject  
  4. - (void)TestLog;  
  5. @end  
  6. </span>  

TestLog.m代碼以下:

 

 

[objc] view plain copy 在CODE上查看代碼片派生到個人代碼片
  1. <span style="font-size:14px;">#import "TestLog.h"  
  2.   
  3. @implementation TestLog  
  4. - (void)TestLog  
  5. {  
  6.     NSLog(@"這裏是靜態庫輸出日誌\n");  
  7. }  
  8. @end</span>  

 

7.刪除TestFramework.m, 修改TestFramework.h內容以下:

 

[objc] view plain copy 在CODE上查看代碼片派生到個人代碼片
  1. <span style="font-size:14px;">#ifndef TestFramework_h  
  2. #define TestFramework_h  
  3.   
  4. #import <TestFramework/TestLog.h>  
  5.   
  6. #endif</span>  
8.暴露Headers供外部項目調用接口.

 

選中Target下的Build Phases, 點擊左上角"+"號→ "New Headers Phase", 展開Headers, 點擊左下角"+", 選擇"TestFramework.h"和"TestLog.h"→ 點擊add, 將這兩個頭文件拖動到上方Public下.

9.而後分別在iOS Device 和 iOS Simulator 下編譯.

在Window→ Projects中左邊選擇TestFramework工程, 點擊右邊的Derived Data右邊的箭頭,打開Finder, 在../Build/Products目錄下有真機和模擬器生成的TestFramework.framework

10.合併Framework.

打開終端, 輸入:

cd /Users/Android/Library/Developer/Xcode/DerivedData/TestFramework-aainjryhnvupalarkmoushxwuwdr/Build/Products, 回車;

 

能夠輸入lipo -info XXX 來查看庫的信息, armv7 arm64的是真機, X86_64的是模擬器;

輸入命令:

lipo -create /Users/android/Library/Developer/Xcode/DerivedData/TestFramework-aainjryhnvupalarkmoushxwuwdr/Build/Products/Debug-iphoneos/TestFramework.framework/TestFramework /Users/android/Library/Developer/Xcode/DerivedData/TestFramework-aainjryhnvupalarkmoushxwuwdr/Build/Products/Debug-iphonesimulator/TestFramework.framework/TestFramework -output NewTestFramework

在Products目錄下會生成一個NewTestFramework的文件, 將該文件拷貝覆蓋TestFramework.framework目錄下的TestFramework文件, 新的TestFramework.framework就是真機和模擬器通用的framework.

相關文章
相關標籤/搜索