zoukankan      html  css  js  c++  java
  • 宋体、目录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库放进去

        

        运行sample-upnp

        

        

        示例比拟粗拙,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

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

  • 相关阅读:
    WPF样式之画刷结合样式
    年度巨献-WPF项目开发过程中WPF小知识点汇总(原创+摘抄)
    30分钟学会XAML
    spring注解之@Import注解的三种使用方式
    大白话讲解Spring的@bean注解
    SpringBoot中的五种对静态资源的映射规则
    Spring注解之@Autowired、@Qualifier、@Resource、@Value
    Spring中如何使用工厂模式实现程序解耦?
    Spring注解之@Component、@Controller、@Service、@Repository
    Spring整合Redis
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3020642.html
Copyright © 2011-2022 走看看