Android ndk Android NDK JNI调用libc函数

Android ndk Android NDK JNI调用libc函数,android-ndk,libc,Android Ndk,Libc,我想知道在本机函数中调用libc函数是否是通过JNI和androidndk完成的,例如 FILE* file = fopen("sdcard/hello.txt","w+"); 实际上是直接到实际的libc函数,或者在调用和本机函数之间是否有代理/包装器 有人有主意吗 它按预期工作,这样做时没有性能问题 对于您的代码,您需要在SD卡之前添加/ 找到SD卡的正确路径可能很棘手: 您如何知道该函数是直接调用的?我构建了一个定制的android仿真器:调用函数时,我登录fopen.c。当我从NDK应

我想知道在本机函数中调用libc函数是否是通过JNI和androidndk完成的,例如

FILE* file = fopen("sdcard/hello.txt","w+");
实际上是直接到实际的libc函数,或者在调用和本机函数之间是否有代理/包装器


有人有主意吗

它按预期工作,这样做时没有性能问题

对于您的代码,您需要在SD卡之前添加/

找到SD卡的正确路径可能很棘手:


您如何知道该函数是直接调用的?我构建了一个定制的android仿真器:调用函数时,我登录fopen.c。当我从NDK应用程序调用它时,不会记录任何内容,在其他情况下,会从系统中记录。直接查看意味着不通过JVM?NDK可以有自己的fopen本机实现…感谢您的帮助。我的意思是,在fopen中调用getuid时会找到appuid。然而,似乎fopen并没有真正接到电话。我寻找了fopen的其他声明,但没有运气。类似的方法有fopen,例如external/qemu中的qemu\fopen,但它们最终都调用stdio.h的fopen