宋体、目录-NDK下 将Platinum SDK 编译成so库 (android - upnp)-by小雨

每日一贴,今天的容内关键字为宋体、目录-

    Platinum UPnP SDK 是一个跨平台的C++库,利用该库,可以很易容就构建出DLNA/UPnP控制点(DLNA/UPnP Control Point)和DLNA/UPnP备设(DLNA/UPnP Device),其中括包有UPnP AV Media Server, Media Render & Control Point的例子。它可以在Windows, Mac OSX, Linux, iPhone, Android, Symbian等多种C语言发开平台上译编通过且运行 

    官方网址:http://www.plutinosoft.com/platinum

    SDK载下址地:http://sourceforge.net/projects/platinum/

    载下后失掉一个PlatinumKit-1-0-4-2_99100e_aab601.zip

    本版信息为

    Platinum Kit Version 1-0-4-2

    -----------------------------

    Neptune:  aab601

    Platinum:  99100e

    解压开来先悉熟下该包的容内

    查看Platinum目录下的ReadMe.txt

    

    该包包含了这两个要主的库

    进入Platinum\Build\Targets\x86-microsoft-win32-vs2008目录

    打开PlatinumManaged.sln解决方案可以看到程工的关联

    NeptunePlatinum都是静态链接库,后续译编so库会用到

    Platinum.Managed是动态链接库,时暂不必管

    看看给android调用的so库如何译编

    

    首先要载下ndk件组包

    网址:http://developer.android.com/tools/sdk/ndk/index.html#Installing

    这里我以ubuntun 64位境环为例,载下android-ndk-r8e-linux-x86_64.tar.bz2 

    在ubuntun下解压后配置ANDROID_NDK_ROOT境环变量

    <1>应用命令vi ~/.bashrc 打开境环变量设置,并在文件末端添加:

    ANDROID_NDK_ROOT=你的ndk根目录绝对路径

    export ANDROID_NDK_ROOT

    <2>应用命令source  ~/.bashrc使境环变量设置失效。

    <3>应用命令echo $ANDROID_NDK_ROOT查看是不是失效,如果出输完整路径准确,说明境环变量设置ok.

    <4>此步可选,应用cd命令进入到androidNDK/samples/hello-jni进入例子目录,然后应用命令:sudo $ANDROID_NDK_ROOT/ndk-build如果译编胜利,则会生成so库,表现NDK可以常正Work

    Ndk境环搭好后就可以译编Platinum lib了

    <1>androidNDK目录面下生成out/config.mk文件,里头输入容内如下:

    HOST_TAG:=linux-x86

    然后存保出退;

    <2>进入Platinum目录

    打命令scons target=arm-android-linux build_config=Release

    (请保确scons工具已安装)

    常正的话最后会出输:scons: done building targets.表现译编完成了。

    在Platinum\Build\Targets\arm-android-linux\Release目录下生成关相*.a

    不带后缀的是c可执行文件

    <3>进入到/PlatinumKit/Platinum/Source/Platform/Android/module/platinum/jni目录面下,

    注意:这里要需先修改该jni目录下的Android.mk文件,将LOCAL_LDLIBS += -laxTls为改LOCAL_LDLIBS += -laxTLS,要主是后面生成库的名字是-laxTLS而不是-laxTls

    应用命令:$ANDROID_NDK_ROOT/ndk-build NDK_DEBUG=0

    译编之后会出输如下信息,表现生成SO库胜利。

    SharedLibrary  : libplatinum-jni.so

    Install        : libplatinum-jni.so => libs/armeabi/libplatinum-jni.so

    进入到目录PlatinumKit/Platinum/Source/Platform/Android/module/platinum/lib目录面下可以看到生成so.

    最后是试测该so

    将Platinum\Source\Platform\Android下的两个工厂导入eclipse

    一个是lib程工,一个是apk程工,立建引用关系,然后在platinum程工下立建libs/armeabi目录并将后面编好的so库放进去

    宋体、目录-NDK下 将Platinum SDK 编译成so库 (android - upnp)-by小雨_第1张图片

    运行sample-upnp

    

    宋体、目录-NDK下 将Platinum SDK 编译成so库 (android - upnp)-by小雨_第2张图片

    示例比拟粗拙,start后备设并不能被外界现发,要需自己新重封装,体具用法可参照

    Platinum\Source\Tests\MediaRenderer下的MediaRendererTest.cpp文件

    可在PlatinumManaged.sln解决方案下将MediaRendererTest程工导入,然后配置项目依附项把那两个静态库添进来,在window下将MediaRendererTest跑起来可被外界现发

    至此一个单简的platinumso库封装和调用就实现了

    至于DMR,DMS以及DMC等实现就要需自己先摸透该架框的应用方法

    要主涉及到这三个类

    PLT_FileMediaServer:封装实现了DMS
PLT_MicroMediaController:不是库里的类,是其一个例子的类,继承了PLT_SyncMediaBrowserPLT_MediaController,即实现了DMC
PLT_MediaRenderer:实现了DMR 

    另外里头多许示例序程括包Platinum.Managed都是值得参考鉴戒的

    好了Platinum UPnP SDK的级初应用教程到此结束

    预知后事如何,且听下回分解

    more brilliant,Please pay attention to my CSDN blog -->http://blog.csdn.net/geniuseoe2012

文章结束给大家分享下程序员的一些笑话语录: 看到有人回帖“不顶不是中国人”,他的本意是想让帖子沉了。

你可能感兴趣的:(android)