最近在集成一个C++写的音乐播放器,而这个播放器又是由四个模块组成的,我们又需要将他们编译成静态库放入项目中进行调试,所以这边用到了子库依赖。
我想了一个有趣的例子,大体有这四个部分是:
1、周杰伦为《淘汰》作曲
2、林夕为《淘汰》写词
3、陈奕迅演唱歌曲《淘汰》
4、我有一个索尼mp3播放器
5、播放器播放《淘汰》
状态5 播放《淘汰》和3、4条件紧密相关的,而条件3又是和1、2条件关联的。其中5发生在主项目,而 1、2、3、4则是子库,下面开始具体说明。
1、创建项目
首先我们先创建一个主项目
项目 DependencyLibraryDemoDependencyLibraryDemo
创建四个framework子项目
子项目ZhouJielunLib
LinXiLib
ChenEasonLib
SonyMp3PlayerLib
2、加入子项目
从主项目工程中中添加子项目工程文件
步骤1
步骤2
3、子项目方法映射
周杰伦的方法:
- (BOOL)WritingSongOfTaoTai;
林夕的方法:
- (BOOL)WritingLyricsOfTaoTai;
根据需求,陈奕迅演唱《淘汰》这俩条件缺一不可,所以:
- (BOOL)singASongCalledTaoTai{
ZhouJielunObject *zhou = [[ZhouJielunObject alloc] init];
_songWrited =[zhou WritingSongOfTaoTai];
LinXiObject *lin = [[LinXiObject alloc] init];
_lyricWrited = [lin WritingLyricsOfTaoTai];
if (_songWrited && _lyricWrited) {
NSLog(@"陈奕迅演唱了《淘汰》");
return YES;
}else{
return NO;
}
}
这个时候要映射周杰伦和林夕的两个方法,需要在陈奕迅的工程里加入周杰伦和林夕的头文件,如图所示:
添加头文件为了映射成功,根据framework编译原则,我们把头文件暴露出来出来:
头文件操作
然后加入依赖库
加入依赖库
加入依赖库
其他的子项目也把头文件 Move to republic group
4、主项目工程操作
首先添加两个依赖库,分别为ChenEasonLib.framework和SonyMp3PlayerLib.framework
依赖库添加
然后导入头文件
#import <ChenEasonLib/ChenEasonLib.h>
#import <SonyMp3PlayerLib/SonyMp3PlayerLib.h>
陈奕迅唱《淘汰》和我有个索尼播放器是播放《淘汰》的必要条件
ChenEasonObject *chen = [[ChenEasonObject alloc] init];
_songHasBeenSung = [chen singASongCalledTaoTai];
SonyMp3Player *player= [[SonyMp3Player alloc] init];
_havePlayer = [player isMyPlayer];
if (_havePlayer && _songHasBeenSung) {
NSLog(@"播放器播放《淘汰》了");
}
5、项目运行以及环境介绍
控制台结果:
运行结果
当前状态我是运行在模拟器上的,没有问题
但是当我运行在真机时,程序崩溃了
运行崩溃这个时候需要 点击Target ——> Build Phases ——> New Copy File Phase ,加入四个.framework
添加 copy files
添加结果
网友评论