1. 程式人生 > >SDK中.a包過大,單獨作為一個項目,功能項目引入SDK項目文檔 及Search Paths相關參數說明

SDK中.a包過大,單獨作為一個項目,功能項目引入SDK項目文檔 及Search Paths相關參數說明

選中 none 打開 目的 每次 創建文件 sdk shu com

SDK包過大,單獨作為一個項目

項目中使用第三方的SDK包(例如所有的.a文件1G多),導致項目整體過大,這個時候就可以把第三方的.a文件單獨作為一個項目。

每次自動化打包都要從git拉去項目,不用每次都拉去第三方的項目。

首先在TEST文件夾中創建一個Demo,在demo 中使用到了幾個xxx.a文件,如下圖所示:

技術分享圖片

在Demo同級的文件夾中創建文件夾Demo-sdk文件夾,裏面放入demo 中使用到了幾個xxx.a文件,如下圖所示:

技術分享圖片

第一種方法:

打開Demo 在General中Linked Frameworks and Libraries中添加.a文件,點擊+號,選擇add other選中Demo-sdk文件夾中的.a文件,如下圖所示

技術分享圖片

技術分享圖片

技術分享圖片

這時候Linked Frameworks and Libraries中會成功添加.a文件,在查看Build Settings中Search Path - Library Search Paths中會指向.a所在文件夾,如下圖所示:

技術分享圖片

這個時候.a文件已經可以正常引用。

第二種方法:

打開項目,找到Build Settings中Search Path - Library Search Paths,在Library Search Paths後面雙擊,再打開Demo及Demo-sdk所在的文件夾,把Demo-sdk文件夾直接拖拽到Library Search Paths添加路徑界面,如下圖所示:

技術分享圖片

拖拽成功後,會出現指向路徑,如下圖:

技術分享圖片

這個時候.a文件已經可以正常引用。

Search Paths相關參數說明

    • 導入庫的時候自動生成的的路徑:$(PROJECT_DIR)/xxx/xxx/xxx,手動拖拽的路徑"$(SRCROOT)/../xxx/xxx/xxx", 手動拖得有雙引號,雙引號的作用是如果在路徑中有空格,可以識別該路徑。沒有雙引號但是路徑中有空格,我們發現它會自動變成兩個路徑。
      • 路徑中有空格必須要加雙引號
    • 多個路徑可以用空格隔開,不用雙引號包住
    • $(SRCROOT)/ $(PROJECT_DIR)基本沒啥區別,都是指向*.xcodeproj所在的路徑
    • 通過../來調到上一層路徑,返回上上層文件夾用../../
    • $(inherited): target 的 Framework Search Paths添加$(inherited)參數會從PROJECT -> Build Settings -> Framework Search Paths裏面的路徑會被其繼承,沒有的話不會繼承。所以一個項目裏面有多個target,使用到了同一個庫(Library或Framework)那麽為了方便我們可以在target添加繼承參數,並且PROJECT統一中添加庫的路徑。繼承的優先級:
      • Platform defaults
      • Project file (描述舉例用這個優先級,比較常用)
      • xcconfig file for the Project file
      • Target
      • xcconfig file for the Target
    • recursive:遍歷該目錄,non-recursive:默認路徑設置;不遍歷該目錄。如果路徑的屬性為recursive,那麽編譯的時候在找庫的路徑的時候,會遍歷該目錄下的所有子目錄的庫文件。PS:在搭建項目的時候,可以創建一個專門放庫文件的文件夾並且設置其屬性為recursive。$(PROJECT_DIR)/**相當於遍歷項目文件同級下的所有路徑(不推薦使用,項目大的話,影響編譯的速度)。
    • Header Search Paths 、User Header Search Paths的參數設置與其相同

參考

Search Paths相關參數說明 --->https://www.jianshu.com/p/9f9c1fd2e8b5

SDK中.a包過大,單獨作為一個項目,功能項目引入SDK項目文檔 及Search Paths相關參數說明