週末もいろいろAndroidの解析をやってみたのだけど、ほとんど進んでない。
一番知りたいSurface周りはまったくと言って良いほど。Surafce,ISurface,SurfaceComposer,SurfaceComposerClient,SurfaceFlingerなど関連クラスがいろいろあるのだけど、その関連性もよく分かってないまま。
システム構成には"SurfaceManager"というSurfaceの重なりなどを司っている部分があるはずで、単純なSurfaceオブジェクトをManagerの管理下に置かないといけないのか、置くための手順はあるのかなどなど謎が多い。
ついでにSurfaceを内部で扱ってる感じのVideoViewとCameraクラスを見てるんだけど、これ内部でSurfaceクラスとのフレンドクラス指定とかやってるんだよな...。
Surface::getISurface()を使うためらしいんだけど、フレンドクラス指定とかやられると、第三者が似たような機能のクラスを作るとすると、Surfaceクラスの元ソースにfriendを入れないといけないってことだよなぁ...。うーん、元ソースは汚さずに拡張したいんだけどなぁ。
あとは、エミュレータでのNativeフレームワークのデバッグ方法について。かなり頑張ってみて、少し光が見えてきた感じ。フルソースをビルドするとシンボルが別個に生成されるのでそれをGDBに読ませれば大丈夫そう。
コメント