1

在此原始帖子的基础上,如何在我的共享库中包含正确的包含文件以使用 libdvm.so?

我需要调用文件 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 },
};`

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

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

4

1 回答 1

0

我在 google AOSP 代码树中找到了我需要的东西。包括这些文件(有几个小 tweeks)让我的代码得以编译。

#include "DexProto.h"   
#include "Object.h"     
#include "Native.h"
于 2013-05-01T00:19:41.533 回答