碎片时间写 C++:Cxxdroid 嵌入我的随身开发工作流

办公 ·约 8 分钟 ·記筆記的貓:團子

Cxxdroid 是什么

Cxxdroid 是一款跑在 Android 手机上的 C/C++ 集成开发环境,内置了 Clang 编译器、CMake 构建系统和 gdb 调试器——换句话说,它能在一台手机上完成从写代码、编译运行到断点调试的完整开发链路。开发商是 Lider Soft KZ,最新版本 5.6_arm64,包名 ru.iiec.cxxdroid。

它不是一个简单的代码编辑器。你在桌面 IDE(VS Code、CLion)里能做的事:多文件 tab 切换、CMake 构建管理、单步调试、编译缓存加速——Cxxdroid 都能在手机上做。对于每天有大量碎片时间、又不想让手机只用来刷短视频的开发者来说,这款软件的定位很明确:把随身携带的那台设备,真正变成生产力工具的一环。

安装

Cxxdroid下载 以 Android APK 形式分发,安装包 47.91M,最新版本号 5.6_arm64,意味着它只支持 64 位 ARM 架构的 Android 设备。安装本身不复杂,手机允许「未知来源」应用安装后直接点 APK 就能装,但有两个前置条件不能跳过:

一是系统版本,Android 8.0(Oreo)以下的设备装不上当前版本的 Cxxdroid——编译器链和工具链对系统库有硬性要求,旧系统要么安装失败要么编译时崩溃。二是 RAM,虽然 2GB 设备也能勉强跑,但编译 C++ 尤其是引入大型库时非常吃内存,4GB 以上会舒适很多。

首次启动不是打开就能写代码——应用会提示下载配套的 NDK 工具链和标准库,这部分数据量不小(几百 MB),建议在 Wi-Fi 环境下等它下载完再开始用。下载过程中别强杀进程,否则下次启动可能还得重下。如果你之前装过旧版 Cxxdroid 又要重装新版,记得先在系统应用设置里清掉存储——旧版本残留的工具链缓存有时会和新版编译器冲突,导致编译莫名其妙报一堆不该有的错误。

以前我怎么浪费通勤时间

我每天上下班地铁各一小时,中间午休再加半小时,一天能挤出来两个半小时的碎片时间。以前这些时间基本浪费了——想写个算法题,手机上没有真正的开发环境,用记事本写 C++ 代码格式全乱,粘回电脑还要手动调缩进;想改个项目里的小 bug,只能在脑子里过一遍逻辑,等回到工位早就忘了当时想的优化点。

试过几个手机上的代码编辑器,要么只支持单文件、没有编译器,要么能编译但每次都要手动敲全量 g++ -I -l 命令——项目里加了第三个文件我就记不住编译参数了,更别说链接个 Boost 库。

现在的随身开发链

这条链的核心思路很简单:桌面端负责初始化和收尾,手机端负责碎片时间的增量开发,Git 是全程的同步中枢。具体怎么接:

第一段:桌面初始化。在 VS Code 或 CLion 里建好项目,写好 CMakeLists.txt——这里有个关键:CMakeLists.txt 里不要写任何平台特定的路径或编译参数。Cxxdroid 内置的 CMake 和桌面版是兼容的,同一份 CMakeLists.txt 手机端直接能用。项目初始化完推到远程仓库,比如 GitHub 或 Gitee。

第二段:手机端接力。Cxxdroid 里 clone 远程仓库,然后就可以开始写了。编辑体验和桌面 IDE 差距不大:支持多 tab 同时开多个文件(main.cpp、utils.h、utils.cpp 各占一个 tab,左右滑动切换),行号 gutter 点一下就加断点,编译点一下就行。最爽的是编译缓存——第一次编译一个引了 Boost 的小程序可能要 10 秒,第二次直接命中缓存,1 秒多就搞定,碎片时间里反复试错完全没有等待压力。

第三段:回到桌面收尾。地铁上写完一段逻辑,Cxxdroid 里 commit + push,到家电脑 pull 下来继续。手机端改的文件和桌面端改的完全等价——都是走 Git,不存在「手机上写的格式有问题要手动调」这种情况。

整条链里还能加几个辅助点:网盘用来备份 build 目录(编译产物),Termux 用来跑 Git 命令行(比 Cxxdroid 内置的 Git 面板灵活),VS Code 的 Remote Development 在某些场景下可以直接 SSH 到手机的 Termux 里远程编辑——不过这个是进阶玩法,日常不需要。

Cxxdroid 多文件编辑 tab 栏

接链最容易断的两个地方

这条链跑了一个月,我踩到的坑主要在两个节点,提前说出来能省你不少时间。

第一个坑:手机上的 Git 认证。Cxxdroid 内置的 Git 支持 SSH,但首次配置需要你把 SSH 私钥放进应用的密钥存储里。我一开始以为 Termux 里的 SSH key Cxxdroid 能自动读——不行,两个应用的文件存储空间是隔离的,得手动把私钥文件复制过去,然后在 Cxxdroid 的 Git 设置里指定 key 路径。如果用 HTTPS 拉仓库就简单多了,但每次 push 都要输用户名密码(token),反而更麻烦。花十分钟配好 SSH key 之后,这个问题就永久解决了。

第二个坑:编译缓存的有效期。编译缓存是 Cxxdroid 提速的关键——它用类似 ccache 的机制,把源码哈希、头文件依赖链、编译器参数三者拼起来算唯一键,命中了就直接复用上次的目标文件。但缓存也有失效场景:你改了 CMakeLists.txt 里的编译选项(比如加了 -std=c++20)、升级了 Cxxdroid 本身、或者应用缓存被系统自动清理了——这三种情况都会导致缓存全废,下次编译又回到冷启动速度。遇到编译突然变慢别慌,大概率是缓存失效了,等这次编译跑完后面又能恢复。如果编译行为异常(比如明明改了代码但输出没变),可以手动清一下应用存储里的缓存目录,强制它全量重编一次。

效果与这条链的边界

这条链跑下来,最直观的收益是每天多了两到三个可以被利用的碎片时间窗口——以前刷短视频的时间,现在能写半道算法题、调完一个小模块的 bug、或者把项目里的某个头文件重构一遍。用数字说的话:一周下来大概能多出 5~6 小时的实际开发时间,比报个周末培训班高效得多。编译缓存的加速效果在大型库上尤其明显——#include <boost/asio.hpp> 这种头文件极其庞大的场景,第二次编译从 10 秒降到 1~2 秒,完全感觉不到等待。

但这条链也有明确的边界,不是什么项目都适合往手机上搬。大项目(超过 100 个源文件)不适合——手机屏幕太小,单步调试时变量面板挤在一起,代码导航的效率远不如桌面;需要链接系统级原生库的项目不适合——Cxxdroid 虽然有 NDK,但某些桌面端能直接链接的库在 Android 上要重新交叉编译;写长文档、重构大量命名空间这种需要大范围阅读代码的活不适合手机做——眼睛累、手指也累。

我的做法是:项目的核心架构、主要模块还是桌面端完成,手机端只承担增量开发——通勤路上写新函数、午休时间调 bug、睡前把代码 commit push。这样手机不抢桌面的活,只是把桌面做不完的碎片时间接住。

最后说一个细节:Cxxdroid 打开的 tab 不代表文件已保存,它在编译前会自动保存所有修改的文件,但切换 tab 或应用切后台时不会——我试过一次 app 被系统杀掉导致刚写的几百行没了。养成手动 Ctrl+S 的习惯,这个细节比什么工作流都重要。

Cxxdroid 编辑器界面

本文為個人基於網路公開資料整理編寫,非官方內容,僅供學習交流參考;軟體版權歸原作者所有,請支持正版;使用過程中遇到問題請查閱官方管道,本文不承擔任何責任。

團子還試過這些