这几天公司的应用(iOS端)上要加一个dlna
的功能,就是局域网内设备投屏控制的一个功能,并提供移动端控制。因为三方库Platinum是使用C++写的,所以我被分配去做库的Objective-C封装的工作。第一次接手这种事,对一个非计算机专业的学生来说还是蛮有挑战性的。组长说要先写一个接口设计文档来描述将要封装的接口和调用方式。只能网上查看各种资料喽!
这里是我一顿狂搜、看各种博客后搜集到的有用资料,列表如下:
链接 | 描述 |
---|---|
Open Connectivity Foundation (OCF)官网 | 这里有UPnP相关的文档和各家公司开发的SDK,例如:Plutinosoft开发的Platinum库也可以从这里了顺藤摸瓜找到 |
dlna官网 | 这里有对dlna协议描述的文档下载,可以说要全面的学习dlna,这里的文档是不可或缺的,当然,实际中我们也没有必要学太深,不过知道这个资源,学习时就有底了;-) |
一个关于dlan介绍的博客 | 上面两个网站就是通过阅读这个博客《DLNA&UPnP开发笔记》系列共四篇文章后找到的,值的阅读 |
好了,有了以上的几个资源,我们就可以开动了。我工作中使用了Platinum库进行dlna的媒体控制器(DMC
)开发,所以也没有对dlna有太全面的了解,一切是从对Platinum库所提供的示例程序和项目README文件进行编译库和相关开发学习的。
那么,第一步就是,拉下项目进行编译和运行示例了。
编译Platinum库
首先,使用git拉下项目最近一次的提交
git clone --depth=1 https://github.com/plutinosoft/Platinum.git
因为Platinum的编译需要依赖一个名为Neptune
的C++跨平台运行环境,当然这个项目里已经有解决方法,不需要我们另外下载或编译Neptune
库,我们只需要通过Carthage
工具,将Neptune
的framework下载到Platinum的项目目录下。具体过程如下:
你要先进行Platinum项目目录下,发现其中有着名为Cartfile
或Cartfile.resolved
这样的文件,文件中指明了Carthage
这个工具软件所要下载的framework名称和版本,其实carthage
这个工具类似于CocoaPods
这个工具。不过你的Mac上很可能并没有安装carthage
,所以你其实可以通过先在Mac上安装homebrew这个工具,然后使用homebrew
来安装carghage
。如下:
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" # 安装homebrew
brew install carthage # homebrew 安装成功后,安装carthage
cd Platinum/ # 进入Platinum项目目录下
carthage update # 运行carthage 让其下载 Carthfile文件中指定的framework
当以上过程完成后,你会发现在Platinum/Carthage
这个目录下面,已经存在Neptune
这个C++跨平台运行环境的分别针对Mac和iOS的framework了,你只要确保以上的命令运行成功,并最终得到Neptune的FrameWork就可以编译Platinum的针对iOS的项目和示例程序了。
使用XCode打开/Platinum/Build/Targets/universal-apple-macosx/Platinum.xcodeproj
项目文件,然后分别运行各