SDK中.a包过大,单独作为一个项目,功能项目引入SDK项目文档 及Search Paths相关参数说明

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

posted @ 2018-12-06 11:31  Belinda_sl  阅读(458)  评论(0编辑  收藏  举报