背景
最近在研究通过 Rust 进行 Android Native 渲染的相关内容,基本方法是,在 Android 里创建一个 Surface View,然后在 OnSurfaceCreated 方法处,将一个 SurfaceHolder 通过 JNI 传到 Rust 层,获取 ANativeWindow 指针,同时搭配raw_window_handler
和wgpu
进行渲染。当然这里还有很多细节,例如 Rust 侧事件循环的设计等等,后续有时间可以单独出一篇特辑。
Bug 出现
Bug 的出现首先要从 Andoird 的刷新原理开始讲起(无特别说明,以下部分的安卓版本均为测试机版本——Android 12)