Dalvik是否在Android中使用本机库?
我读了很多关于它的文章,但不能清楚地理解一个非常重要的问题。例如,我编写了一个程序(用Java),在它编译了我的程序并在Dalvik中执行之后,使用了OpenGLAPI(包括包含此API的包)。这个字节码是如何与opengles通信的呢?此通讯何时出现 如果我错了,请纠正我,因为以下只是猜测: Android框架附带了一组Java类,这些类实现了OpenGL功能。 这个Java类将通过JNI调用本机OpenGL函数,从而利用本机OpenGL库 如果您查看Android框架源代码,可以看到以下内容:Dalvik是否在Android中使用本机库?,android,opengl-es,Android,Opengl Es,我读了很多关于它的文章,但不能清楚地理解一个非常重要的问题。例如,我编写了一个程序(用Java),在它编译了我的程序并在Dalvik中执行之后,使用了OpenGLAPI(包括包含此API的包)。这个字节码是如何与opengles通信的呢?此通讯何时出现 如果我错了,请纠正我,因为以下只是猜测: Android框架附带了一组Java类,这些类实现了OpenGL功能。 这个Java类将通过JNI调用本机OpenGL函数,从而利用本机OpenGL库 如果您查看Android框架源代码,可以看到以下内容
public class GLES20 {
public static native void glClearColor(
float red,
float green,
float blue,
float alpha
);
// C function void glClearDepthf ( GLclampf depth )
public static native void glClearDepthf(
float depth
);
// C function void glClearStencil ( GLint s )
public static native void glClearStencil(
int s
);
// More functions
}
所以,我认为这只是JNI。这都是开源的,去那里看看吧 我认为这种机制与Java调用本机函数(用关键字“native”标记的函数)的方式没有区别。我不知道Java究竟是如何做到这一点的。