用多语言实现一个安卓终端模拟器 |
您所在的位置:网站首页 › 终端模拟器6111 › 用多语言实现一个安卓终端模拟器 |
Project Mterm 系列章节
系列章节: 用多语言实现一个安卓终端模拟器-概述 用多语言实现一个安卓终端模拟器-libmterm 用多语言实现一个安卓终端模拟器-mterm 用多语言实现一个安卓终端模拟器-mterm_packages 用多语言实现一个安卓终端模拟器-总结项目仓库: libmterm: github.com/zakiaatot/l… mterm: github.com/zakiaatot/m… mterm_packages: github.com/zakiaatot/m… 产品技术总结在前面几个章节 我们首先从 Linux 系统编程中实现一个伪终端开始入手,实现了一个封装出 创建终端、销毁终端、读终端、写终端 等接口的库-libmterm 其中核心的内容就是实现伪终端的原理:然后我们基于 libmterm 和 tauri 一步步去实现终端的前端-mterm 其中的难点不是 UI 界面的编写和 xterm.js 的 api 调用,而是如何实现 JS 调用 C++ 编写的 libmterm, 我们经过了许多层级 Js -> Rust -> C++ ,涉及 ffi 和动静态链接库等基本知识 最后我们基于 termux-packages 一起实现终端的自定义 shell 环境-mterm_packages 核心在于为什么需要一个自定义 shell,因为安卓自带的 /system/bin/sh 是一个非标准的 shell,仅提供少量功能,需要实现 apt 包管理器功能,就得手动编译 bash apt 等源码去实现一个自定义 shell 环境。主要涉及编译的方法和过程 最后构成了如下所示的Project Mterm 不足与后续改进主要的不足之处存在于两个地方: mterm_packages 编译的不够彻底,在编译途中遇到很多问题我选择了直接跳过,这导致最终很多包无法安装,提示缺少依赖, 在包管理和维护上还需要花大量的时间。 由于 mterm 的前端基本通过 Webview+Vue 实现,可能会出现性能问题,对于终端的读取我也是通过 setInterval 来实现的,会存在某些 bug,后续优化的方案可能是放在 Kotlin 中的线程中实现。 收获与感悟收获很多,从 Linux 系统编程到 Android 系统开发,从 C++ 到 Rust,从 Rust 到 Kotlin,从 Kotlin 到 Vue,学习了 伪终端编程、静动态链接库、ffi、编译 等等知识,使自我对组织项目工程的能力得到了提高。 感悟就是,想到了一个自己想做的想法,一定要去自己实现一遍,不能三分钟热度,要坚持到底,虽一路布满荆棘,但最终会有很多收获。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |