Android 在JNI共享库中查找函数?
有人知道如何通过NDK编译的共享库和面向公共的JNI函数/方法来显示所有可用的函数吗 我有一个lib*jni.so文件,我需要它来访问它的方法。使用nm-Dg lib*jni.so输出共享库中找到的所有符号。我只寻找那些定义为JNI钩子的 谢谢,Android 在JNI共享库中查找函数?,android,c++,java-native-interface,Android,C++,Java Native Interface,有人知道如何通过NDK编译的共享库和面向公共的JNI函数/方法来显示所有可用的函数吗 我有一个lib*jni.so文件,我需要它来访问它的方法。使用nm-Dg lib*jni.so输出共享库中找到的所有符号。我只寻找那些定义为JNI钩子的 谢谢, Kevin使用本机方法在.class文件上运行javap。您可以使用一些技巧来找到答案 检查相应的.class文件。如果您有库的.class文件,可以在Eclipse中打开它们并搜索native关键字,查看哪些方法已声明为在native中实现 使用st
Kevin使用本机方法在.class文件上运行
javap
。您可以使用一些技巧来找到答案
native
关键字,查看哪些方法已声明为在native中实现strings
命令转储所有字符串。除非库执行Java方法名称的运行时串联(不太可能),否则您应该能够列出从中引用的大多数Java方法和类。因此,使用strings
。使用regexps,可以过滤出感兴趣的字符串。例如,willstrings lib*jni.so | grep'L[^;]*;'代码>列出从.so引用的所有类(例如Lcom/somecompany/project/SomeClass;
)。将方法与类匹配可能会很棘手,但根据您的需要,这可能就足够了
dvmRegisterJNIMethod
末尾启用调试打印,使其成为:LOGI(“JNI已注册%s.%s:%s”,clazz->descriptor,methodName,signature)代码>