VLC源码分析-0:编译源码环境配置
本文档描述从VLC media player for iOS下载的源码包VLC for iOS 2.7.8 source code进行的编译环境配置过程。
VLC for iOS 2.7.8 source code下载后并不能直接编译,一是使用CocoaPods,二是依赖Google、DropBox等公司的SDK。
1、更新CocoaPods
VLC的Podfile使用https://github.com/CocoaPods/Specs.git
作源,对于国内的开发者,下载所需的时间过长,切换成国内的源才是合理的选择。处理过程如下:
- 在pod repo里添加master指向国内源。若提示存在master,先执行pod repo remove master,删掉主数据源即可。
pod repo add master 'https://git.coding.net/hging/Specs.git'
- 在Podfile头部指定source
source 'https://git.coding.net/hging/Specs.git'
经测试,开源中国的源http://git.oschina.net/akuandev/Specs.git
无法正常访问。
2、执行compileVLCforiOS.sh
执行sh compileVLCforiOS.sh
,对于国内用户,一般会得到SVN无法链接到指定URL错误。
svn: E175002: Unable to connect to a repository at URL 'http://google-api-objectivec-client.googlecode.com/svn/trunk/Source'
svn: E175002: OPTIONS of 'http://google-api-objectivec-client.googlecode.com/svn/trunk/Source': could not connect to server (https://google-api-objectivec-client.googlecode.com)
多数人会改成https协议,然而,并没什么用,Google这个地址已经没内容了,网页访问是404,找不到对象,对了,今天是七夕,找不到对象是正常的,不然我就陪妹子去了,写什么鬼文档。
3、手工组装
既然,sh compileVLCforiOS.sh
执行出错,那就手工下载这些组件,这正是shell文件做的事。对了,下载这些组件需要跨越长城。
3.1、GDrive
虽然compileVLCforiOS.sh下载google-api-objectivec-client,但是,从后面执行结果看,它只用了HTTPFetcher组件,单独下载HTTPFetcher即可。因为,GitHub上的google-api-objectivec-client并没包含
HTTPFetcher组件,通过git克隆子模块也下载不到HTTPFetcher。幸好,GitHub有热心群众抽取了HTTPFetcher模块代码,克隆下来即可。
svn checkout https://google-api-objectivec-client.googlecode.com/svn/trunk/Source GDrive
GDrive后面的几个组件,如LXReorderableCollectionViewFlowLayout、WhiteRaccoon都能克隆自GitHub。
3.2、Dropbox
Dropbox 1.3.13版官方已不提供下载,再次,GitHub有热心群众作了备份,感谢全世界热心的码农。
4、开始正常编译
最后,HockeySDK-tvOS可正常下载,再次执行compileVLCforiOS.sh,开始漫长的等待。
编译进展5小时后,编译脚本输出如下信息,意味着编译基本结束。
[info] building universal static libs for OS style iPhone
编译过程中,若下载不了openjpeg-1.5.0、apache-ant-1.9.6.tar.bz2,可手工下载。其中,由于VLC的编译脚本只认压缩文件,且apache-ant-1.9.6.tar.bz2已无直接的下载地址,那么由apache-ant-1.9.6.zip下载后,通过如下方式打包成apache-ant-1.9.6.tar.bz2。
- 解压apache-ant-1.9.6.zip,取出apache-ant-1.9.6
- 打包apache-ant-1.9.6成apache-ant-1.9.6.tar
tar -cf apache-ant-1.9.6.tar apache-ant-1.9.6
- apache-ant-1.9.6.tar打包成apache-ant-1.9.6.tar.bz2
tar -cjf apache-ant-1.9.6.tar.bz2 apache-ant-1.9.6.tar