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