一任柜、新建一個靜態(tài)庫framework
1.新建一個靜態(tài)庫工程.
file→ new→ project, 彈出框中選擇iOS→ framework & library中的cocoa touch static library.點擊Next,輸入product name: TestFramework, 點擊Next→ 點擊Create.
2.刪除向?qū)晒こ讨械腡arget.
點擊工程名→ 點擊TARGETS → 右鍵Delete.
3.增加一個新的Target.
點擊Target底部的"+"號,彈出框中選擇OS X→ Framework & Library中的Bundle.點擊Next,輸入product name TestFramework, 點擊Finish.
4.修改新建 Target 的 Building Settings 項.
a: 選中TARGET→ Build Settings項, 將Architectures→ Base SDK 改為Latest iOS(iOS 11.2), 將Architectures 改為 $(ARCHS_STANDARD);
b: 在 Deployment項, 選中"Mac OS X Deployment Target", 點擊鍵盤上的Delete鍵, 將“Targeted Device Family”改成"1,2";
c: 在 (null) - Deployment項, 修改"iOS Deployment Target"為"8.0",同時修改PROJECT的info下的Deployment Target → "iOS Deployment Target"為"8.0";
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.將要寫入靜態(tài)庫的源碼文件拖入工程目錄, 這里以一個簡單的語句輸出作為例子
Command+N 新建一個cocoa Touch class, 名字為TestLog, 點擊Next, 點擊create;
TestLog.h代碼如下:
[objc]view plaincopy
#import
@interfaceTestLog : NSObject
- (void)TestLog;
@end
TestLog.m代碼如下:
[objc]view plaincopy
#import"TestLog.h"
@implementationTestLog
- (void)TestLog
{
NSLog(@"這里是靜態(tài)庫輸出日志\\n");
}
@end
7.刪除TestFramework.m, 修改TestFramework.h內(nèi)容如下:
[objc]view plaincopy
#ifndef TestFramework_h
#define TestFramework_h
#import
#endif
8.暴露Headers供外部項目調(diào)用接口.
選中Target下的Build Phases, 點擊左上角"+"號→ "New Headers Phase", 展開Headers, 點擊左下角"+", 選擇"TestFramework.h"和"TestLog.h"→ 點擊add, 將這兩個頭文件拖動到上方Public下.
9.然后分別在iOS Device 和 iOS Simulator 下編譯.(command+B)
在Window→ Projects中左邊選擇TestFramework工程, 點擊右邊的Derived Data右邊的箭頭,打開Finder, 在../Build/Products目錄下有真機(jī)和模擬器生成的TestFramework.framework
此路徑可以直接選中framework后然后右擊在finder中顯示;
10.合并Framework.
打開終端, 輸入:
cd /Users/djs/Library/Developer/Xcode/DerivedData/TestFramework-aainjryhnvupalarkmoushxwuwdr/Build/Products, 回車;
可以輸入lipo -info XXX 來查看庫的信息, armv7 arm64的是真機(jī), X86_64的是模擬器;
輸入命令:
lipo -create /Users/djs/Library/Developer/Xcode/DerivedData/TestFramework-aainjryhnvupalarkmoushxwuwdr/Build/Products/Debug-iphoneos/TestFramework.framework/TestFramework /Users/djs/Library/Developer/Xcode/DerivedData/TestFramework-aainjryhnvupalarkmoushxwuwdr/Build/Products/Debug-iphonesimulator/TestFramework.framework/TestFramework -output NewTestFramework
在Products目錄下會生成一個NewTestFramework的文件, 將該文件拷貝覆蓋TestFramework.framework目錄下的TestFramework文件, 新的TestFramework.framework就是真機(jī)和模擬器通用的framework.
二吨灭、對支付寶SDK進(jìn)行打包
1刚照、以上的步驟只是簡單的完成了最基本的打包,那么我們要做的是對支付寶的SDK進(jìn)行打包喧兄;首先講下我們對支付寶SDK進(jìn)行打包的原因无畔,是因為蘋果審核人員在審核的時候首先會經(jīng)過機(jī)審,機(jī)審過后才是人工審核吠冤,機(jī)審期間檢測到支付寶的SDK就直接會來一個3.1.1大禮包浑彰,最少也是2.1大禮包;而且有很大幾率延遲審核拯辙,小鹿哥真是吃夠了苦頭郭变;然后PM還必須要求加上支付寶支付,于是小鹿哥涯保,就想著把這個SDK打包成framework躲避機(jī)審(這并不違反規(guī)則)诉濒。
2、把支付寶SDK導(dǎo)入建好的工程下夕春,然后把支付功能全部遷移到這個管理文件中循诉,我們創(chuàng)建的是MyStaticLibrary.h和MyStaticLibrary.m,然后我們調(diào)用這個管理類中的接口就可以了撇他。
把支付的所有類文件全部放在.m文件中,不允許訪問狈蚤;
那么現(xiàn)在再次在release模式下進(jìn)行第一步操作困肩,打包出來的framework就可以支持支付功能,并且能夠上架了脆侮;
希望因為支付問題而煩惱的小伙伴锌畸,看到此文會有所幫助。