DOGEAWA

WORKS / ANDROID IDE · 2026

Doge IDE+

把 C++ 编译器和 Python 终端,装进一台安卓平板。

一台 13 英寸的平板,能不能当作写代码的电脑?Doge IDE+ 是我的回答:编辑、编译、运行都留在设备里,断网也能从 #include 跑到 Hello, world。

开源 · 测试版 · 本体 + 两个资源包

Doge IDE+ / 1.1.8 / 13″ 平板 / 横屏点击看大图 ↗ Doge IDE+ 1.1.8 的工作台:左侧是项目文件树,中间是 main.cpp 编辑器和 C++ 补全列表,底部是输出面板。
现代深色主题 · 纯黑代码区 · 补全来自本地 clangd真实运行界面,不是设计稿
  • 0云端请求
    导入工具链后,断网也能编译
  • 235 MBC/C++ 离线运行库
    一次性导入,不依赖网络
  • 12个版本
    从 1.0.0 到 1.1.8
  • 44 px最小触控目标
    给手指,不是给鼠标

01 / 起点

把电脑留在桌上

我有一台 13 英寸的安卓平板。想临时改一段 C++ 作业、跑几行 Python,通常只有两条路:开电脑,或者用在线编译器。前者太重,后者要网络,代码还会离开设备。

Doge IDE+ 想做第三种:打开平板,像打开一个 IDE 一样新建文件、写代码、按 Ctrl+Enter,然后在本机看到输出。它不连接另一台电脑,也不把源码发给任何服务器。

2026.09 — 2026.10 / 独立开发

目标不是把桌面 IDE 缩小,而是让平板在离线状态下,完成一次完整的 编辑 → 编译 → 运行。

02 / 怎么跑起来

从源码到输出,
不离开这台设备

页面本身是一个 WebView,但它不负责编译。所有请求都发给 127.0.0.1 上的本地服务,再由 Java 层交给真正的工具链。C/C++ 和 Python 走两条不同的路。

  • 30 s编译 / 链接超时
  • 10 min交互运行上限
  • 0外部网络请求

一个故意保留的旧 targetSdk:它停在 28。从 target 29 起,系统不允许从应用私有目录执行导入的工具链,而本地编译正好依赖这一点。

LOCALHOST / 127.0.0.1:8787同源 · 一次性会话令牌 · 无跨域
C / C++
main.cpp+ math.h
Clang编译为对象
wasm-ld链接
WASI .wasm可执行模块
WAMRJNI 执行

stdout / stderr → 输出面板

PYTHON
main.py项目文件
Python 3.14解释器
子进程独立运行

stdout / stderr → 终端

编译、链接和运行都带超时;对象缓存按项目与运行库版本区分。

03 / 能力

它不是只有一个编辑器

从编译器、语言服务到底部面板,能自己写的部分都自己写了。

C++01

本地编译,不看云端转圈

Clang 把源文件编成对象,wasm-ld 链接成 WASI 模块,WAMR 在设备上执行。C17 和 C++20 都能跑,项目头文件按目录查找。

PY02

Python 3.14,独立子进程

Python 项目交给单独的启动器和子进程,标准库随运行库导入。和 C/C++ 共用同一个终端,输入、中断和 EOF 都是一套。

LSP03

clangd 留在本机

补全、诊断和文档同步都走本地 clangd。项目头文件里声明的函数、宏、类型能直接补全,改完头文件马上生效。

UI04

一整套工作台骨架

菜单栏、活动栏、资源管理器、多标签编辑区、底部面板和状态栏。不是一张截图,是每天真的会用到的布局。

CMD05

命令面板与项目搜索

Ctrl+Shift+P 搜全部命令,快捷键表由命令表自动生成;项目内搜索支持大小写、全字和正则,结果直接跳到对应行。

SAF06

打开真实项目目录

通过系统文件选择器打开目录,递归扫描源文件,保存时写回并清理已删除的文件。关掉应用,草稿也还在。

>_07

按行工作的终端

终端支持输入、Ctrl+C 中断和 Ctrl+D EOF;stdin、stdout、stderr、info 分开显示,每个流单独记住滚动位置。

44PX08

为手指和软键盘重排

触控目标不小于 44px;窄屏时资源管理器变成覆盖层;软键盘弹出时收起底部面板和状态栏,把空间还给编辑器。

04 / 界面

桌面 IDE 的骨架,
平板的尺寸

下面几张图都来自 1.1.8 的真实运行界面,不是设计稿。

命令面板

记不住快捷键,就搜命令

菜单里的每一项都在命令面板里,输入几个字就能找到。快捷键表也从同一张命令表生成,不会出现菜单和键盘对不上的情况。

  • Ctrl+Shift+P 打开,方向键选择,Enter 执行
  • 新建文件、打开项目、运行、重命名都在里面
  • 对话框打开时只响应 Esc,不抢编辑器的键
命令面板列出新建文件、打开项目、保存项目到目录、运行当前文件等命令及快捷键。
命令面板Ctrl+Shift+P
工作台局部:左侧项目文件树列出 main.cpp 与 math.h,右侧是 main.cpp 编辑区和补全列表。
工作台文件树 · 标签 · 编辑区
设置对话框的外观与编辑选项:界面主题、编辑器字号、自动补齐括号、输入时自动弹出补全、符号合并、平滑光标和全角符号检查。
设置主题 · 补全 · 输入
底部面板的四个视图:问题、输出、终端、任务;输出分为 stdin、stdout、stderr、info 四个流,下方是状态栏。
底部面板:问题 / 输出 / 终端 / 任务stdin / stdout / stderr / info 分开滚动

05 / 细节

它由什么组成

一些实现上的选择,和目前还没做到的事。

目标设备
Android 7.0+(API 24)· ARM64 · 13 英寸横屏
外壳
Java WebView + 127.0.0.1 本地 HTTP 服务
编译
Clang → wasm-ld → WASI,WAMR 通过 JNI 执行
语言
C17 · C++20 · Python 3.14
编辑
CodeMirror 5.65 + 本地 clangd
资源
C/C++ 运行库约 235 MB;Python 运行包按需导入
依赖
0 个第三方 Gradle 依赖
版本
1.1.8 · versionCode 12 · debug 签名
技术注脚

targetSdk 停在 28 不是忘了升级。从 target 29 起,系统不允许从应用私有目录执行导入的工具链,而本地编译正好依赖这一点。

OPEN SOURCE · DOWNLOADS

想试试看?

本体、C/C++ 运行库和 Python 运行包分开下载。需要 ARM64 的安卓平板;先装本体,再按需导入资源包。