在android sdk的sources目录下有EGLContext.java源文件,如下:
package javax.microedition.khronos.egl;import javax.microedition.khronos.opengles.GL;public abstract class EGLContext
{
    private static final EGL EGL_INSTANCE = new com.google.android.gles_jni.EGLImpl();
    
    public static EGL getEGL() {
        return EGL_INSTANCE;
    }    public abstract GL getGL();
}
然而在android.jar包中,反编译EGLContext.class,却是如下代码:
package javax.microedition.khronos.egl;import javax.microedition.khronos.opengles.GL;public abstract class EGLContext
{
  public EGLContext()
  {
    throw new RuntimeException("Stub!"); } 
  public static EGL getEGL() { throw new RuntimeException("Stub!");
  }  public abstract GL getGL();
}
所以我不解:在android.jar包中的EGLContext.class里面,getEGL()函数没做任何事情啊,
那为什么单步调试的时候,getEGL()会返回一个确切的值呢?而且还可以通过这个值,调用eglGetDisplay()呢?

解决方案 »

  1.   

    public static EGL getEGL() {
         return EGL_INSTANCE;
    }
    getEGL方法返回了一个EGL_INSTANCE变量    而EGL_INSTANCE = new com.google.android.gles_jni.EGLImpl();  这句是通过底层jni获得EGL的一个实现类的实例~~~  亲,记得给分哦~
     
      

  2.   

    但是我反编译android.jar包中的EGLContext.class,却看到如下结果:
     public static EGL getEGL() { throw new RuntimeException("Stub!");
      }
    这里面,getEGL()什么也没做啊,怎么会有返回值呢?
      

  3.   

    再问一下,我的电脑里面并没用com.google.android.gles_jni这个开发包啊?
    是不是这个包被集成到了安卓手机的系统里面了?
      

  4.   


    再问一下,我的电脑里面并没用com.google.android.gles_jni这个开发包啊?
    是不是这个包被集成到了安卓手机的系统里面了?
      

  5.   

    恩,这个包名是Google系统自带的