iOS項目功能模組封裝SDK使用總結

來源:互聯網
上載者:User

標籤:ext   type   framework   事先   相容   終端命令   動態庫   build   link   

一、功能模組SDK封裝步驟:

1、建立IOS Framework工程

先我們需要建立一個iOS的CocoaTouch工程,點擊Next,輸入我們Framework的名字即可。下方我們暫且將該Framework的名字命名為“CreateLoginSDKFramework”。操作如下所示:

Xcode ——》File\New\Project ——》iOS\Framework and Library\Cocoa Touch Framework ——》命名項目工程 ——》儲存目錄

 

2、設定相容版本:

建立完工程後,我們要選擇“Deployment Target”, 此處我們選擇的是8.0。也就是說此處我們封裝的SDK所支援的iOS系統版本是iOS8.0+。操作所示:

Xcode ——》Project ——》Targets ——》General ——》Deployment Info ——》ios8.0(最低支援的相容版本)

 

3、配置靜態庫:

由於建立的framework預設是動態庫,所以我們要講Mach-O Type設定為靜態庫“Static Library”。操作如下所示:

Xcode ——》Project ——》Targets ——》Build Settings ——》Mach-O Type——》Static Library

 

4、匯入原始碼檔案,進行編譯:

將事先準備好的SDK原始碼引入到我們的Framework的工程中進行編譯了,在編譯之前我們要選擇SDK使用者可以看到的檔案。在Build Phases下的Headers中進行設定的。將使用者可以看到的標頭檔放在Public中,使用者看不到的放在Project中。操作如下所示:

Xcode ——》Project ——》Targets ——》Build Phases ——》Headers——》Public/Private/Project

 

5、編譯工程:

設定和配置完畢後,我們就要對我們的Framework工程進行編譯了。先選擇模擬器進行編譯,然後選擇真機進行編譯。編譯完後,在Products下會產生相應的Framework, 然後通過Show in Finder進行查看即可。查看時,如果想看“模擬器”和“真機”的framework的話,在Show in finder後,需要前往上層檔案夾查看。

 

6、合并Framework庫:

因為在模擬器下編譯會產生模擬器下使用的Framework,在真機下編譯會產生真機使用的Framework。如果想我們產生的Framework既可以在真機下使用,也可以在模擬器下使用,那麼我們需要將兩個Framework進行合并。使用終端命令將上述兩個檔案進行合并。下方就是合并上述兩個檔案的執行命令, 執行完下方命令後會產生合并後的新檔案。操作如下所示:

開啟終端 ——》lipo -create 模擬器framework路徑  真機framework路徑 -output 新的檔案

 

7、注意事項:

1、編譯Framework工程前,需要設定Edit Scheme, 選擇run->將Debug模式改成Release模式,選擇Close。

2、合并Framework出現error:can‘t map input file: xxxFramework.framework/ (Invalid argument),原因是如果工程名稱和Framework的Target名稱不一樣的話,要自訂FrameworkName。

lipo -info xxxFramework.framework/xxxFramework 或者

cd xxxFramework.framework

lipo -info xxxFramework

完整命令如下:

lipo -create "${DEVICE_DIR}/${FMK_NAME}" "${SIMULATOR_DIR}/${FMK_NAME}" -output "${INSTALL_DIR}/${FMK_NAME}"

 

 

二、資源檔的Bundle封裝步驟:

1、Bundle工程的建立:

首先像建立Framework工程一樣建立一個Bundle工程,因為iOS工程下方沒有Bundle類型的工程,所以我們需要在OS X -> Framework & Library -> Bundle下面來建立我們的Bundle工程。操作如下所示:

Xcode ——》File\New\Project ——》macOS\Framework and Library\Bundle——》命名項目工程 ——》儲存目錄

 

2、配置Bundle工程:

建立完Bundle工程後,我們要對其進行相應的配置。因為我們是選擇OS X建立的Bundle,預設的Bundle是不能在iOS中使用的,所以我們得將Base SDK進行設定,選擇相應的iOS版本即可,如下所示。選擇完Base SDK後,我們還要像上面Framework的封裝一樣,設定一下要相容的iOS版本(iOS Deployment Target)。操作如下所示:

A、Xcode ——》Project ——》Targets ——》Build Settings ——》Base SDK ——》ios8.0

B、Xcode ——》Project ——》Targets ——》General ——》Deployment Info ——》ios8.0(最低支援的相容版本)

 

3、匯入資源檔進行編譯:

進行上述配置完後,接下來就是引入資源檔進行編譯了,下方引入的資源檔就是我們的LoginSDK.storyboard。引入資源後,進行編譯,編譯後會在Products下面產生相應的Bundle資源檔,該檔案就可以和我們的Framework進行使用了。

 

4、項目中Bundle資源的載入:

產生完Bundle資源檔後,我們在SDK的原始碼中,要從Bundle資源檔中進行資源的載入。下方代碼就是載入相應Bundle的代碼。通過下方的宏定義,就可以通過“Bundle”的名字來載入Bundle。

#define LOGIN_SDK_BUNDLE_NAME   @"LoginSDKResource.bundle"

#define LOGIN_SDK_BUNDLE_PATH   [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent: LOGIN_SDK_BUNDLE_NAME]

#define LOGIN_SDK_BUNDLE        [NSBundle bundleWithPath: LOGIN_SDK_BUNDLE_PATH]

 

5、注意事項:

如果Bundle工程中中引用了資源檔,工程編譯過後會出現.storyboardc或者.xibc檔案才算真正封裝成功。

 

三、封裝後的SDK檔案的使用步驟:

1、匯入SDK,進行路徑配置:

匯入SDK到我們的App工程後,我們要對其進行相應的配置。首先我們要對Framework Search Paths進行配置,也就是說告訴編譯器我們的第三方SDK所在的位置。下方這個配置項在引入SDK後就預設存在的,如果沒有的話就進行配置即可。操作如下所示:

Xcode ——》Project ——》Targets ——》Build Settings ——》Search Paths\Framework Search Paths ——》$(PROJECT_DIR)/LoginSDK

 

2、進行編譯配置:

配置完路徑後,接下來我們要在Other Linker Flags添加上-Objc和-all_load選項。-Objc這個flag告訴連結器把庫中定義的Objective-C類和Category都載入進來。而-all_load會強制連結器把目標檔案都載入進來,即使沒有objc代碼。操作如下所示:

Xcode ——》Project ——》Targets ——》Build Settings ——》Linking\Other Link Flags——》-Objc和-all_load

 

3、SDK的使用:

配置完畢後,接下來就是在我們App中使用該SDK了。下方代碼就是我們上述LoginSDK的使用方式,首先擷取單例,然後檢查是否登入,登入成功後根據Block回調跳轉到首頁,如果未登入,就通過LoginAPI擷取登入頁面進行登入。

 

iOS項目功能模組封裝SDK使用總結

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.