Android 是否可以从本机代码访问Dalvik VM

Android 是否可以从本机代码访问Dalvik VM,android,android-ndk,Android,Android Ndk,我希望能够在Android中使用本机代码瞄准Dalvik VM。 这意味着使用android源代码存储库中列出的本机类 特别是,我想调用Sync.dvmLockObject及其对应的Sync.dvmUnlockObject 可能吗?您能否提供一个快速的代码片段,或特定库要包含的说明 或者,您可以提供一个java或本机代码替代方案来实现同样的功能(即,能够访问java对象的监视器。例如,使用pthread似乎并不合适)。您可以使用JNI查找框架的任何私有类,并以通常的JNI方式查找和调用其方法。但

我希望能够在Android中使用本机代码瞄准Dalvik VM。 这意味着使用android源代码存储库中列出的本机类

特别是,我想调用
Sync.dvmLockObject
及其对应的
Sync.dvmUnlockObject

可能吗?您能否提供一个快速的代码片段,或特定库要包含的说明

或者,您可以提供一个java或本机代码替代方案来实现同样的功能(即,能够访问java对象的监视器。例如,使用
pthread
似乎并不合适)。

您可以使用JNI查找框架的任何私有类,并以通常的JNI方式查找和调用其方法。但不是
Sync
类的方法。它是dalvik本地图书馆的一部分。您可以从代码中将其作为常用的C函数调用。与任何其他系统库一样,您将链接到
libdvm.so


但我不知道调用此函数有什么有用的用途。

谢谢!我想将java监视器对象操作为
java.util.concurrent.Lock
,这里有另一篇文章解释了这个想法:你能给我一些更多的提示吗?我对如何获得实际进行调用所需的结构感到困惑(
Object*
,例如
Monitor*
),这是
libdvm的一部分。因此
多亏了,我们现在才明白,操纵dalvik私有对象的艰苦工作没有真正的理由!这不是JNI的
MonitorEnter
MonitorExit
吗?这正是我几分钟前发现的:s