网站建设资讯

NEWS

网站建设资讯

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://cdweb.net/article/dssccjp.html