在Android中,2D渲染的引擎为SGL,为了给上层应用提供更便捷的服务,Android通过android.graphics.*实现了对SGL引擎的Java JNI接口封装;通过android.graphics、android.graphics.drawable、android.graphics.drawable.shapes等包,Android提供了对2D渲染如Canvas、Color、Paint、Path、Point、Drawable等的渲染支持。Skia在Android中的位置如下图所示。
下面是Surface Flinger的监听线程处理事件的实现过程:

Skia在Android中的位置
Skia的源代码主要位于external\skia目录下。与Firefox采用的Cairo相比,Skia更加小而高效,接口也更加简洁。
external\skia\src\animator目录下的文件用来实现Skia的动画效果,分为Animator、Display、Draw、SkScript等逻辑模块。其中Animator部分包括SkAnimatorActive、SkAnimatorBase、SkAnimatorField、SkAnimatorSet、SkAnimatorScript等;Display 部分包括SkDisplayAdle、SkDisplayAdd、 SkDisplayEvents、SkDisplayList、SkDisplayInput、SkDisplayMovie等;Draw部分包括SkDraw3D、 SkDrawBitmap、SkDrawClip、SkDrawColor、SkDrawBlur、SkDrawLine、SkDrawPaint、 SkDrawPath、SkDrawPoint等;SkScript部分包括SkScript、SkScriptRuntime、SkScriptDecompile等。
external\skia\src\core目录下的文件为Skia的核心部分,执行图形绘制功能,主要类包括SkColor、SkCanvas、SkBitmap、SkPicture、SkBlitter、SkCordic、SkPath、SkPoint、SkRect、SkRegion、SkMask 等。
external\skia\src\gl目录下的文件实现了Skia的图形库。其引擎为Open GL或者 Open GL ES,用于实现一些简单的3D效果。
external\skia\src\images目录下的文件实现了Skia的图像部分。支持常见图像的解码、部分图像的编码和动画等。
external\skia\src\ports目录下的文件定义了Skia的移植封装接口,包括Font、Event、File、Thread、Time、XMLParser等。
external\skia\src\svg目录下的文件实现了Skia对矢量图像SVG的支持。
external\skia\src\utils目录下的文件实现了Skia的一些辅助工具,包括SkCamera、SkColorMatrix、SkOSFile、SkProxyCanvas、SkInterpolator等。
external\skia\src\views目录下的文件实现了Skia的界面UI库,控件包括Window、Menu、 TextBox、ListView、 ProgressBar、 Widget、 ScrollBar、TagList、Image等。目前Skia的UI库暂未被Android使用。
external\skia\src\xml目录下的文件实现了Skia对XML的DOM、解析器的封装。具体的XML解析器的实现需要根据不同的操作系统及宿主程序来实现。相关的类包括SkDOM、SkDOMNode、SkDOMAttr、SkXMLParser、SkXMLParserError、SkXMLPullParser、SkDisplayXMLParser、SkXMLWriter、SkXMLStreamWriter、SkXMLAnimatorWriter等。相关的实现位于external\skia\src\xml目录下。