Dalvik是否在Android中使用本机库?

Dalvik是否在Android中使用本机库?,android,opengl-es,Android,Opengl Es,我读了很多关于它的文章,但不能清楚地理解一个非常重要的问题。例如,我编写了一个程序(用Java),在它编译了我的程序并在Dalvik中执行之后,使用了OpenGLAPI(包括包含此API的包)。这个字节码是如何与opengles通信的呢?此通讯何时出现 如果我错了,请纠正我,因为以下只是猜测: Android框架附带了一组Java类,这些类实现了OpenGL功能。 这个Java类将通过JNI调用本机OpenGL函数,从而利用本机OpenGL库 如果您查看Android框架源代码,可以看到以下内容

我读了很多关于它的文章,但不能清楚地理解一个非常重要的问题。例如,我编写了一个程序(用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究竟是如何做到这一点的。