本地编译,不看云端转圈
Clang 把源文件编成对象,wasm-ld 链接成 WASI 模块,WAMR 在设备上执行。C17 和 C++20 都能跑,项目头文件按目录查找。
01 / 起点
我有一台 13 英寸的安卓平板。想临时改一段 C++ 作业、跑几行 Python,通常只有两条路:开电脑,或者用在线编译器。前者太重,后者要网络,代码还会离开设备。
Doge IDE+ 想做第三种:打开平板,像打开一个 IDE 一样新建文件、写代码、按 Ctrl+Enter,然后在本机看到输出。它不连接另一台电脑,也不把源码发给任何服务器。
2026.09 — 2026.10 / 独立开发
目标不是把桌面 IDE 缩小,而是让平板在离线状态下,完成一次完整的 编辑 → 编译 → 运行。
02 / 怎么跑起来
页面本身是一个 WebView,但它不负责编译。所有请求都发给 127.0.0.1 上的本地服务,再由 Java 层交给真正的工具链。C/C++ 和 Python 走两条不同的路。
一个故意保留的旧 targetSdk:它停在 28。从 target 29 起,系统不允许从应用私有目录执行导入的工具链,而本地编译正好依赖这一点。
stdout / stderr → 输出面板
stdout / stderr → 终端
03 / 能力
从编译器、语言服务到底部面板,能自己写的部分都自己写了。
Clang 把源文件编成对象,wasm-ld 链接成 WASI 模块,WAMR 在设备上执行。C17 和 C++20 都能跑,项目头文件按目录查找。
Python 项目交给单独的启动器和子进程,标准库随运行库导入。和 C/C++ 共用同一个终端,输入、中断和 EOF 都是一套。
补全、诊断和文档同步都走本地 clangd。项目头文件里声明的函数、宏、类型能直接补全,改完头文件马上生效。
菜单栏、活动栏、资源管理器、多标签编辑区、底部面板和状态栏。不是一张截图,是每天真的会用到的布局。
Ctrl+Shift+P 搜全部命令,快捷键表由命令表自动生成;项目内搜索支持大小写、全字和正则,结果直接跳到对应行。
通过系统文件选择器打开目录,递归扫描源文件,保存时写回并清理已删除的文件。关掉应用,草稿也还在。
终端支持输入、Ctrl+C 中断和 Ctrl+D EOF;stdin、stdout、stderr、info 分开显示,每个流单独记住滚动位置。
触控目标不小于 44px;窄屏时资源管理器变成覆盖层;软键盘弹出时收起底部面板和状态栏,把空间还给编辑器。
05 / 细节
一些实现上的选择,和目前还没做到的事。
targetSdk 停在 28 不是忘了升级。从 target 29 起,系统不允许从应用私有目录执行导入的工具链,而本地编译正好依赖这一点。
OPEN SOURCE · DOWNLOADS
本体、C/C++ 运行库和 Python 运行包分开下载。需要 ARM64 的安卓平板;先装本体,再按需导入资源包。
测试版 APK 为 debug 签名;安装与资源包导入步骤见 GitHub 仓库。