前言:
1、你還想怎么樣窍蓝?
需求: 我們要使用 IJKPlayer 來進(jìn)行視頻播放吓笙。但是我們還有其他業(yè)務(wù)邏輯巾腕,所以基于IJK做了一個(gè)二次封裝。然后要把這些代碼做成FrameWork提供給客戶使用叁鉴,總的的來說佛寿,要做的事情就是:
別人的Framework + 你的代碼 = 你的Framework
本篇以IJKPlayer為例
1、提取關(guān)鍵信息
打開第三方提供的FrameWork,我們需要收集的就是FrameWork里面提供的 所有代碼文件(.h) 和 .a 文件
1.新建一個(gè)文件夾腔长,你隨便取個(gè)名字捞附,這里我取的是 “MyLib”
2.把第三方的 “xxx.framework” 展開,取得里面的 “xxx.a” 文件胆绊。
3.把第三方的 “xxx.framework” 展開欧募,取得“Headers” 文件夾(一般都是這個(gè)文件夾)下面的所有代碼文件跟继。
4.把上兩步取到的 .a 和 代碼文件 都拷貝放到你新建的文件夾里面。
1娱两、收集重要文件.png
2金吗、創(chuàng)建FrameWork工程
2摇庙、新建FrameWork工程.png
3跟匆、把提取出來的第三方文件導(dǎo)入工程
3 引入第三方.png
4玛臂、添加自己的業(yè)務(wù)代碼
在這里注意對(duì)第三方庫的引用方式,在編寫業(yè)務(wù)代碼的時(shí)候編譯工程可能會(huì)報(bào)錯(cuò)讽营,繼續(xù)看5泡徙、6、兩步
示例的業(yè)務(wù)代碼在文章末尾給出
4、代碼.png
5莉兰、修改 Build Active Architecture Only
5挑围、改build.png
6、修改 Mach-O Type
做完了之后編譯一下糖荒,保證工程沒有報(bào)錯(cuò)杉辙。
6、mach o.png
7捶朵、暴露文件1
7蜘矢、暴露文件1.png
8、暴露文件2
8品腹、暴露文件2.png
9、創(chuàng)建測(cè)試工程
9红碑、創(chuàng)建App.png
10舞吭、編譯并引入Framework
這里只是編譯了模擬器包,真機(jī)運(yùn)行會(huì)報(bào)錯(cuò)句喷。如果需要模擬器和真機(jī)通用的包镣典,需要使用 lipo -create 命令。
http://www.reibang.com/p/f7da0f77bf51
合并命令:
lipo -create Release-iphoneos/ABCD.framework/ABCD Release-iphonesimulator/ABCD.framework/ABCD -output ABCD
10唾琼、引入.png
11兄春、使用FrameWork
11、使用庫.png
12锡溯、解決報(bào)錯(cuò)
12赶舆、報(bào)錯(cuò).png
13、添加系統(tǒng)庫祭饭,Command + R
13芜茵、添加系統(tǒng)庫,成功播放.png
圖片中的示例代碼
#import "FunPlusViewController.h"
#import "MyLib/IJKMediaPlayer.h" //用到哪個(gè)類就引入哪個(gè)類
//#import "MyLib/IJKMediaFramework.h" //不要這樣引入IJK的頭文件,這樣會(huì)導(dǎo)致IJK報(bào)錯(cuò),不必要的麻煩
@interface FunPlusViewController ()
/// 播放器
@property (nonatomic, strong) IJKFFMoviePlayerController *player;
@end
@implementation FunPlusViewController
- (void)viewDidLoad {
[super viewDidLoad];
NSString *hunan = @"rtmp://58.200.131.2:1935/livetv/hunantv";
NSURL *url = [NSURL URLWithString:hunan];
[IJKFFMoviePlayerController setLogLevel:k_IJK_LOG_SILENT];
IJKFFOptions *o = [IJKFFOptions optionsByDefault];
_player = [[IJKFFMoviePlayerController alloc] initWithContentURL:url withOptions:o];
_player.view.frame = self.view.bounds;
_player.view.backgroundColor = [UIColor whiteColor];
_player.scalingMode = IJKMPMovieScalingModeAspectFill;
[self.view addSubview:_player.view];
[_player prepareToPlay];
[_player play];
}
@end