在此原始帖子的基础上,如何在我的共享库中包含正确的包含文件以使用 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 调用这些本地方法的格式是什么?