如何使用Android NDK构建Platinum UPnP堆栈?

时间:2010-12-07 14:29:35

标签: java android-ndk scons upnp

我在使用MacOSX 10.6.5上的Android NDK构建Platinum UPnP堆栈时遇到问题。

我从here下载了最新版本的Android NDK for Mac,安装了SCons(用于构建)并从其网站下载了最新版本的Platinum。

然后我将ANDROID_NDK_HOME设置到我的NDK根目录并尝试构建:
scons -Q target = arm-android-linux 我收到以下错误:

  

(...)   例外:未配置ANDROID NDK,使用host-setup.sh进行配置:   (...)

问题是该文件已根据文档从Android NDK中删除:

  

以前的版本要求您运行'build / host-setup.sh'脚本   配置NDK。但是,此步骤已在第4版中删除。

现在我有点卡住,不知道如何解决这个问题。

更新:

我已经下载了NDK r3(最后一个丢失了文件)并使用host-setup.sh进行了配置

但是当我尝试构建目标时,它会运行一段时间然后崩溃:

Build/Targets/arm-android-linux/Debug/Source/Tests/FileMediaServer/FileMediaServerTest.o: In function `main':
/Users/darkh/Platinum-SRC-0-6-3_683/Platinum/Source/Tests/FileMediaServer/FileMediaServerTest.cpp:153: warning: warning: gets() is very unsafe; consider using fgets()

Build/Targets/arm-android-linux/Debug/libPltMediaServer.a(PltMediaItem.o): In function `PLT_MediaItem::DynamicCast(void const*)':
PltMediaItem.cpp:(.text._ZN13PLT_MediaItem11DynamicCastEPKv[PLT_MediaItem::DynamicCast(void const*)]+0x5c): undefined reference to `PLT_MediaItem::_class_PLT_MediaItem'

Build/Targets/arm-android-linux/Debug/libPltMediaServer.a(PltMediaItem.o): In function `PLT_MediaContainer::DynamicCast(void const*)':
PltMediaItem.cpp:(.text._ZN18PLT_MediaContainer11DynamicCastEPKv[PLT_MediaContainer::DynamicCast(void const*)]+0x5c): undefined reference to `PLT_MediaContainer::_class_PLT_MediaContainer'
collect2: ld returned 1 exit status

scons: *** [Build/Targets/arm-android-linux/Debug/FileMediaServerTest] Error 1

1 个答案:

答案 0 :(得分:1)

除了host-setup.sh问题之外,Platinum看起来像是使用自己的基于SCons的构建系统,它依赖于包含arm-eabi-4.4.0的编译器的路径。在最新的Android NDK中也发生了变化。

你要么自己破解构建系统,要么等待它们为r5更新它。一个开始寻找的好地方是文件Build/Targets/arm-android-linux/Config.scons,但是为了让它运行起来,你必须做出很多非显而易见的改变。

编辑:

尝试使用r4b。在android-ndk-r4b/out/host/config.mk中创建一个文件,其内容为:

HOST_TAG := linux-x86

..或Mac上的等效内容 - 无论调用android-ndk-r4b/build/prebuilt/中的目录。那应该编译很多 - 它在这里做了。