ios模块开发,ios 应用开发
iOS 项目依赖子模块工程
上一节我们讲了项目结构优化中的 《项目嵌套子工程》 ,接下来我们继续学习项目结构优化系列之项目依赖子模块工程。
创新互联建站专注于晋宁企业网站建设,响应式网站,商城建设。晋宁网站建设公司,为晋宁等地区提供建站服务。全流程按需设计网站,专业设计,全程项目跟踪,创新互联建站专业和态度为您提供的服务
在开发中,我们会遇到这样一种情况:公司有很多app,而这些app中会用到一些公用的功能模块,比如说登录。这时,我们可以单独创建这些子模块然后关联进项目中。
1、创建workspace、项目工程、模块动态库
我们首先创建workspace来进行项目和模块的管理。命名为Projects。
接着我们分别创建两个项目工程,学生端和教师端。命名为StudentProject和TeacherProject。
然后创建这两个项目工程都需要用到的子功能模块——登录模块动态库。命名为LoginLib。
项目工程和动态库的建立都需要关联进Projects里面。如下图所示:
当加载动态库中的xib文件的时候,需要在init方法中生命xib文件所在的bundle,否则会找不到。
图片等资源文件同理:
3、动态库的相关设置
TARGETS -Build Settings - Build Active Architchture Only 设置为No
TARGETS-Build Settings-Other Linker Flags,添加 -ObjC
TARGETS-Build Settings-Enable Bitcode 设置为No
Edit scheme-Run-Build Configuration设置为Release
完成!!!
【iOS开发】workspace 的介绍和使用
参考文章:
iOS使用Workspace来管理多项目
Xcode中的 workspace, project, target, scheme
workspace是Xcode的一种文件,用来管理工程和里面的文件,一个workspace可以包含若干个工程,甚至可以添加任何你想添加的文件。workspace提供了工程和工程里面的target之间隐式和显式依赖
关系,用来管理和组织工程里面的所有文件。
1、用来管理同一个项目中的不同模块
可以把在项目中把一些工具类或模块等放在另一个 动态库工程 中,然后在主工程中来使用里面的类和方法。
其中一个重要的步骤就是在主项目的Build Settings 里找到Header Search Paths,添加一项$(SRCROOT)/../BookObtain,并且设置为recursive。$(SRCROOT)是当前的工程路径,..是返回上一层,然后到BookObtain文件夹。使用了相对路径,为了是项目移动不会影响这个配置,只要主工程和其他工程的相对位置不变,这里的相对位置是固定在同一个文件夹
recursive的意思是预先的意思,即这个动态库项目要先编译,然后再编译主项目。
使用方法可以参照:
iOS使用Workspace来管理多项目
Cocoapods,让iOS开发更简单(三):实践经验汇总
相信各位读了之前的两篇文章,对pods的使用已经相当熟练了。不过在纷繁复杂的实际使用场景下,可能还是会遇到一些问题。本文就结合自己的实践经验,做一些快问快答,希望大家能多多补充交流。话不多说,那我们就即刻开始吧!
pod系列文章
Cocoapods,让iOS开发更简单(一):走近Cocoapods
Cocoapods,让iOS开发更简单(二):创建私有库
Cocoapods,让iOS开发更简单(三):实践经验汇总
一文带你快速分清静态库-动态库-Framework
一般推荐使用指定版本或范围版本号,以确保依赖的稳定性。
总结 :能用pod install解决问题的,就不要用pod update。因为pod update会把依赖库全部检查一遍,不仅慢有时候还会出现坑。
忽略Pods警告,有些第三方Pod集成进来会有一大堆警告信息,在Podfile中对应的target或分组下加上关键字inhibit_all_warnings!就可以把警告忽略。
作用:
在pods中用frameworks替代.a静态库。
场景:
swift项目pods默认开启(use_frameworks!),OC项目pods默认关闭(#use_frameworks!),同时需满足以下两点,
解析:
swift工程依赖了OC工程的话,需要use_modular_headers!
示例:
为某个 Pods 使用模块化标头,可以使用以下语法:
pod 'TestPodLib', :modular_headers = true
另外,当全局使用 use_modular_headers! 属性时,同时还可以使用以下方法从模块化标头中排除特定的Pod:
pod 'TestPodLib', :modular_headers = false
版本格式:主版本号.次版本号.修订号,版本号递增规则如下:
常用的方式调用pod中的素材是不生效的,因为默认是从mainBundle中读取的,如
打在pod中的素材已经不在mainBundle中而在对应组件下的bundle 里面,所以应该这么调用:
在用CocoaPods集成第三方库之后,默认情况下,使用类似#import XXX/YYY.h的方式引入第三方库的头文件。
pod search只会搜索本地缓存的库,如果想搜索到最新的第三方框架或者某个框架的最新版本,必须先使用pod repo update。
文章标题:ios模块开发,ios 应用开发
URL地址:http://scyanting.com/article/dssccjp.html