以此原始帖子为基础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调用这些本机方法的格式是什么?
答案 0 :(得分:0)
我在google AOSP代码树中找到了我需要的东西。包括这些文件(带有一些小的tweek)让我的代码变得合适。
#include "DexProto.h"
#include "Object.h"
#include "Native.h"