我正在尝试将https://github.com/j0r1/JRTPLIB集成到gradle中。关于readme,已经有关于如何将库编译为在Android上安装的教程,但是我需要gradle集成。
下面是我如何将项目添加到我的gradle文件中:
我收到了一个编译错误,因为我的系统库不支持ifaddrs。然而,该项目的策划者对此有一个测试:
jrtplib_include_test(ifaddrs.h RTP_SUPPORT_IFADDRS "// No ifaddrs support"),那么,为什么gradle试图构建一些没有通过测试的东西呢?
下面是编译我的应用程序时的错误:
Error while executing '/android-sdk-linux/cmake/3.6.4111459/bin/cmake' with arguments {--build /home/project/src/jscam/android/app/.externalNativeBuild/cmake/debug/x86 --target jrtplib-shared}
[1/3] Building CXX object src/CMakeFiles/jrtplib-shared.dir/rtpudpv4transmitter.cpp.o
[2/3] Building CXX object src/CMakeFiles/jrtplib-shared.dir/rtpudpv6transmitter.cpp.o
FAILED: /android-sdk-linux/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++ --target=i686-none-linux-android --gcc-toolchain=/android-sdk-linux/ndk-bundle/toolchains/x86-4.9/prebuilt/linux-x86_64 --sysroot=/android-sdk-linux/ndk-bundle/sysroot -DJRTPLIB_COMPILING -Djrtplib_shared_EXPORTS -I/home/project/src/jscam/JRTPLIB/src -Isrc -isystem /android-sdk-linux/ndk-bundle/sources/cxx-stl/gnu-libstdc++/4.9/include -isystem /android-sdk-linux/ndk-bundle/sources/cxx-stl/gnu-libstdc++/4.9/libs/x86/include -isystem /android-sdk-linux/ndk-bundle/sources/cxx-stl/gnu-libstdc++/4.9/include/backward-isystem /android-sdk-linux/ndk-bundle/sysroot/usr/include/i686-linux-android -D__ANDROID_API__=16 -g -DANDROID -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -mstackrealign -Wa,--noexecstack -Wformat -Werror=format-security -O0 -fno-limit-debug-info -fPIC -MD -MT src/CMakeFiles/jrtplib-shared.dir/rtpudpv6transmitter.cpp.o -MF src/CMakeFiles/jrtplib-shared.dir/rtpudpv6transmitter.cpp.o.d -o src/CMakeFiles/jrtplib-shared.dir/rtpudpv6transmitter.cpp.o -c /home/project/src/jscam/JRTPLIB/src/rtpudpv6transmitter.cpp
/home/project/src/jscam/JRTPLIB/src/rtpudpv6transmitter.cpp:1575:2: error: use of undeclared identifier 'getifaddrs'
getifaddrs(&addrs);
^
/home/project/src/jscam/JRTPLIB/src/rtpudpv6transmitter.cpp:1588:2: error: use of undeclared identifier 'freeifaddrs'
freeifaddrs(addrs);
^
2 errors generated.
FAILED: /android-sdk-linux/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++ --target=i686-none-linux-android --gcc-toolchain=/android-sdk-linux/ndk-bundle/toolchains/x86-4.9/prebuilt/linux-x86_64 --sysroot=/android-sdk-linux/ndk-bundle/sysroot -DJRTPLIB_COMPILING -Djrtplib_shared_EXPORTS -I/home/project/src/jscam/JRTPLIB/src -Isrc -isystem /android-sdk-linux/ndk-bundle/sources/cxx-stl/gnu-libstdc++/4.9/include -isystem /android-sdk-linux/ndk-bundle/sources/cxx-stl/gnu-libstdc++/4.9/libs/x86/include -isystem /android-sdk-linux/ndk-bundle/sources/cxx-stl/gnu-libstdc++/4.9/include/backward-isystem /android-sdk-linux/ndk-bundle/sysroot/usr/include/i686-linux-android -D__ANDROID_API__=16 -g -DANDROID -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -mstackrealign -Wa,--noexecstack -Wformat -Werror=format-security -O0 -fno-limit-debug-info -fPIC -MD -MT src/CMakeFiles/jrtplib-shared.dir/rtpudpv4transmitter.cpp.o -MF src/CMakeFiles/jrtplib-shared.dir/rtpudpv4transmitter.cpp.o.d -o src/CMakeFiles/jrtplib-shared.dir/rtpudpv4transmitter.cpp.o -c /home/project/src/jscam/JRTPLIB/src/rtpudpv4transmitter.cpp
/home/project/src/jscam/JRTPLIB/src/rtpudpv4transmitter.cpp:1813:2: error: use of undeclared identifier 'getifaddrs'
getifaddrs(&addrs);
^
/home/project/src/jscam/JRTPLIB/src/rtpudpv4transmitter.cpp:1826:2: error: use of undeclared identifier 'freeifaddrs'
freeifaddrs(addrs);
^
2 errors generated.
ninja: build stopped: subcommand failed.发布于 2018-04-23 11:38:19
Android为你准备了<ifaddrs.h>。但是缺少的函数,如getifaddrs(),可用于__ANDROID_API__ 24及更高版本,而您的项目则设置为
如果您的库将与低于24的minSdkVersion一起使用,则不能使用这些函数。不幸的是,JRTPLIB似乎没有对ifaddr的如此细粒度的支持,但是如果您选择的话,您可以强制关闭RTP_SUPPORT_IFADDRS。
https://stackoverflow.com/questions/49935883
复制相似问题