Articles of AndroidNDK

错误:jni.h:没有这样的文件或目录

我正在尝试构buildandroid ndk项目时出现错误: error: jni.h: No such file or directory 但是: locate jni.h命令show me: locate jni.h /usr/lib/jvm/java-6-openjdk-i386/include/jni.h 我的行为出了什么问题? 编辑: 如果我在源代码中对其进行硬编码,但是我有很多使用此标头的文件。 我需要做的,我所有的文件可以看到/usr/lib/jvm/java-6-openjdk-i386/include/jni.h?

从types为'int'的types'struct in_addr'中指定不兼容types

我在linux(ubuntu 12.04 linux kernel 3.12.17)中编写了下面的代码,并且比较成功,但是当我在eclipse中将代码移动到android中,并与ndk进行比较时,它显示错误:当指定types为' struct int in_addr'从types'int'。 addrs = inet_makeaddr(inet_netof(sin->sin_addr), INADDR_ANY); 整个代码是: #include <jni.h> #include <linux/if.h> #include <linux/in.h> #include <linux/sockios.h> #include <stdint.h> #include <sys/endian.h> static struct in_addr *getbroadcastaddr(char *inter, int sock, char *buf){ struct ifconf ifc; struct ifreq ifreq,*ifr; static struct in_addr addrs; struct sockaddr_in *sin; bzero(&addrs,sizeof(addrs)); ifc.ifc_len = UDPMSGSIZE; ifc.ifc_buf = buf; if […]

在Android上TCP快速打开

有没有人成功地在Android上使用TCP Fast Open Option? 我在Android NDK C程序中使用这个代码: sfd = socket(AF_INET, SOCK_STREAM, 0); sendto(sfd, data, data_len, MSG_FASTOPEN, (struct sockaddr *) &server_addr, addr_len); 如http://lwn.net/Articles/508865/所示 它在Linux和Android上编译都很好。 它在Linux上完美无瑕,但在Android上调用sendto()时,程序退出。 我尝试了Android 4. *和5.1(设备),甚至在Android 6(现在只有模拟器)。 PS我注意到,Android 4. *在/proc/sys/net/ipv4/没有tcp_fastopen文件,在Android 5.1上的文件是在那里,但它包含0。

运行build_android.sh时出错“C compiler works … no”

我按照https://github.com/appunite/AndroidFFmpeg为android构buildffmpeg,但运行./build_android.sh时会出错 checking for style of include used by make… GNU checking for arm-linux-gcc… /home/toai/Downloads/android-ndk-r9/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc –sysroot=/home/toai/Downloads/android-ndk-r9/platforms/android-5/arch-arm/ checking whether the C compiler works… no configure: error: in `/home/toai/AndroidFFmpeg/FFmpegLibrary/jni/vo-amrwbenc': configure: error: C compiler cannot create executables See `config.log' for more details 请在这一步帮助我。 我使用Ubuntu 13.04 64位操作系统 该文件包含编译器在运行configure时产生的任何消息,以便在configure时出错。 它是通过由GNU Autoconf 2.69生成的vo-amrwbencconfiguration0.1.2创build的。 调用命令行是 $ ./configure –prefix=/home/toai/AndroidFFmpeg/FFmpegLibrary/jni/vo-amrwbenc/../ffmpeg-build/armeabi –host=arm-linux –disable-dependency-tracking –disable-shared –enable-static –with-pic […]

初学者需要bash帮助

我目前正在编辑一个脚本,以便一些静态值被硬编码,因为我将是唯一使用它的。 所采取的价值如下: set -x ANDROID_NDK="$1" NDK_TOOLCHAIN="$2" ANDROID_ABI="$3" ANDROID_TOOLCHAIN_COMPILER_VERSION="$4" ANDROID_NATIVE_API_LEVEL="$5" PREFIX="$6" 我想将ANDROID_NDK="$1"更改为path值。 我试着inputpath,所以它变成了ANDROID_NDK="path/to/ndk/"但是却给出了错误。 我看到了我需要使用PATH=但是如何将variablesANDROID_NDK设置为path? 会是PATH=$ANDROID_NDK:path/to/ndk ?

在/ dev / input / eventX中写入事件需要什么命令?

我正在开发一个需要发送触摸事件到/ dev / input / eventX的android应用程序。 我知道做这样的事情的C代码结构如下: struct input_event { struct timeval time; unsigned short type; unsigned short code; unsigned int value; }; 要使用这样的代码,我需要设置NDK 。 相反,我想在android中使用Runtime.getRunTime.exec ()运行等效的linux命令,而不需要使用NDK。 有没有办法做到这一点? 如果不是,发送事件需要的C代码的其余部分是什么? 例如,如何在x = 200和y = 300处向event0发送触摸事件? 我搜查了,我没有find一个明确的解决scheme。 谢谢。

Linux C ++:链接器正在输出奇怪的错误

好的,这里是我得到的输出: arm-none-linux-gnueabi-ld –entry=main -dynamic-linker=/system/bin/linker -rpath-link=/home/oem/android-ndk-r3/build/platforms/android-5/arch-arm/usr/lib -L/home/oem/android-ndk-r3/build/platforms/android-5/arch-arm/usr/lib -nostdlib -lstdc++ -lm -lGLESv1_CM -rpath=/home/oem/android-ndk-r3/build/platforms/android-5/arch-arm/usr/lib -rpath=../../YoghurtGum/lib/Android -L./lib/Android intermediate/Alien.o intermediate/Bullet.o intermediate/Game.o intermediate/Player.o ../../YoghurtGum/bin/YoghurtGum.a -o bin/Galaxians.android intermediate/Game.o: In function `Galaxians::Init()': /media/YoghurtGum/Tests/Galaxians/src/Game.cpp:45: undefined reference to `__cxa_end_cleanup' /media/YoghurtGum/Tests/Galaxians/src/Game.cpp:44: undefined reference to `__cxa_end_cleanup' intermediate/Game.o:(.ARM.extab+0x18): undefined reference to `__gxx_personality_v0' intermediate/Game.o: In function `Player::Update()': /media/YoghurtGum/Tests/Galaxians/src/Player.h:41: undefined reference to `__cxa_end_cleanup' intermediate/Game.o:(.ARM.extab.text._ZN6Player6UpdateEv[_ZN6Player6UpdateEv]+0x0): undefined reference to `__gxx_personality_v0' intermediate/Game.o:(.rodata._ZTIN10YoghurtGum4GameE[_ZTIN10YoghurtGum4GameE]+0x0): undefined […]

Android仿生libc中缺less的adjtime()

我试图编译一个android的ntp客户端使用android构build系统,并运行到一个问题,其中adjtime()似乎在仿生libc中缺less。 如何在不修改仿生的情况下添加对adjtime()的支持? 我正在编译openntpd以供参考。

如果服务器在write()之后立即调用close(),那么“由Peer重置连接”

我有一个在Android / Linux上运行的C编写的AF_INET / SOCK_STREAM服务器,看起来更像这样: … for (;;) { client = accept(…); read(client, &message, sizeof(message)); response = process(&message); write(client, response, sizeof(*response)); close(client); } 据我所知,closures调用不应立即终止与客户端的连接,但显然这样做:客户端在有机会读取服务器响应之前报告“通过对等方进行连接重置”。 如果我在write()和close()之间插入延迟,客户端可以按照预期读取响应。 我得到一个暗示,它可能与SO_LINGER选项有关,但是我检查了它的值,并且struct linger( l_onoff , l_linger )的两个成员的值均为零。 有任何想法吗?

Android NDK套接字连接问题

好的,所以我可以使用下面的代码在我的Android应用程序中创build一个监听套接字: bool CSocket::tcplisten(int port, int max, int mode) { if((sockid = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == INVALID_SOCKET) return false; sockaddr_in addr; addr.sin_family = AF_INET; addr.sin_addr.s_addr = INADDR_ANY; addr.sin_port = htons(port); if(mode)setsync(1); if(bind(sockid, (struct sockaddr*)&addr, sizeof(sockaddr)) == SOCKET_ERROR) { closesocket(sockid); return false; } if(listen(sockid, max) == SOCKET_ERROR) { closesocket(sockid); return false; } return true; } 然后我可以使用下面的代码在同一个进程中连接到它: bool […]