0
我想知道是否在通过JNI与Android NDK完成的本地函数中调用libc函数,例如Android NDK JNI调用libc函数
FILE* file = fopen("sdcard/hello.txt","w+");
实际上是直接进入到实际的libc函数或是否有通话和本地函数之间的一些代理/包装。
有没有人有想法?
我想知道是否在通过JNI与Android NDK完成的本地函数中调用libc函数,例如Android NDK JNI调用libc函数
FILE* file = fopen("sdcard/hello.txt","w+");
实际上是直接进入到实际的libc函数或是否有通话和本地函数之间的一些代理/包装。
有没有人有想法?
它按预期工作,没有性能问题,当我这样做。
对于您的代码,您需要在sdcard
之前添加/
。
前往你在正确的道路SD卡可能会非常棘手:
你怎么知道该函数直接调用?我构建了一个自定义的android模拟器:当函数被调用时,我登录fopen.c。当我从我的NDK应用程序调用它时,在系统的其他场合没有任何记录,它会记录。请参阅http://stackoverflow.com/q/21136622/883083 – IHeartAndroid
直接意味着不通过JVM? NDK可以有自己的本地实现'fopen' ... – Dannie
感谢您的帮助。那么“直接”我的意思是App的uid是在fopen()中调用getuid()时会被发现的。但是,似乎fopen并不真正被调用。我寻找其他fopen的声明,但没有运气。有类似的方法,如fopen(例如外部/ qemu中的qemu_fopen()),但所有这些方法最终调用stdio.h的fopen() – IHeartAndroid