Android JNI / C.调用dalvik本机函数dvm_dalvik_system_DexFile []的语法是什么?

时间:2013-04-30 05:42:14

标签: android java-native-interface native

以此原始帖子为基础How can I include proper include files for using libdvm.so at my shared library?

我需要在文件dalvik / vm / native / dalvik_system_DexFile.cpp中调用结构dvm_dalvik_system_DexFile []中定义的本机'openDexFile'函数。该实现位于库libdvm.so。

const DalvikNativeMethod dvm_dalvik_system_DexFile[] =
{ 
{ "openDexFile", "(Ljava/lang/String;Ljava/lang/String;I)I", Dalvik_dalvik_system_DexFile_openDexFile },
{ "openDexFile", "([B)I", Dalvik_dalvik_system_DexFile_openDexFile_bytearray },
{ "closeDexFile", "(I)V", Dalvik_dalvik_system_DexFile_closeDexFile },
{ "defineClass", "Ljava/lang/String;Ljava/lang/ClassLoader;I)Ljava/lang/Class;", Dalvik_dalvik_system_DexFile_defineClass },
{ "getClassNameList",   "(I)[Ljava/lang/String;", Dalvik_dalvik_system_DexFile_getClassNameList },
{ "isDexOptNeeded",     "(Ljava/lang/String;)Z", Dalvik_dalvik_system_DexFile_isDexOptNeeded },
{ NULL, NULL, NULL },
};`

我能够在这篇文章http://net.cs.uni-bonn.de/fileadmin/user_upload/plohmann/2012-Schulz-Code_Protection_in_Android.pdf的Appendex“A”中找到类似的内容,但它无法为我编译。我无法找到JNI定义(类型)作者对“u4”,“ArrayObject”的引用,或者上面定义的所有重要的“dvm_dalvik_system_DexFile”。

从JNI调用这些本机方法的格式是什么?

1 个答案:

答案 0 :(得分:0)

我在google AOSP代码树中找到了我需要的东西。包括这些文件(带有一些小的tweek)让我的代码变得合适。

#include "DexProto.h"   
#include "Object.h"     
#include "Native.h"