Skip to content

AYssu/AkodeIDE

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 

Repository files navigation

Akode - Android C++ IDE

Platform Language Version

Akode 是一款专为 Android 平台设计的 C/C++ 集成开发环境(IDE),让你可以在手机上编写、编译和运行 C/C++ 代码。无需电脑,随时随地进行 C/C++ 开发。

✨ 功能特性

🖥️ 代码编辑器

  • 基于 Sora Editor 的专业代码编辑器
  • C/C++ 语法高亮(TextMate 语法支持)
  • 智能代码补全
  • 括号匹配高亮
  • 行号显示
  • 当前行高亮
  • 多文件标签页管理(最多10个)
  • 符号快捷输入栏
  • 支持多种编辑器主题
  • 支持cmake make ninja

🧠 LSP 智能支持

  • 集成 Clangd LSP 服务
  • 实时语法错误检测
  • 智能代码补全
  • 函数签名提示
  • 代码诊断和错误标记
  • 跳转到定义
  • 查找引用与重命名支持

❤️ 编译运行

  • 内置 Clang/Clang++ 编译器(首次启动自动安装)
  • 可选安装 CMake / Make / Ninja 构建工具
  • OLLVM/iROBF 代码混淆支持(适配新版 Clang 工具链)
  • 支持 C 语言(.c)和 C++ 语言(.cpp/.cc/.cxx)
  • 自定义编译参数
  • 自定义编译命令管理
  • 支持 Root 权限运行程序
  • 编译错误定位和标记
  • 编译缓存(相同代码跳过编译)

🔐 OLLVM 代码混淆

内置 OLLVM/iROBF 混淆器,支持多种代码保护方式,增强逆向难度:

参数 说明
-mllvm -irobf-indbr 间接分支混淆(加密跳转目标)
-mllvm -irobf-icall 间接函数调用混淆(加密函数目标)
-mllvm -irobf-indgv 间接全局变量引用混淆(加密全局变量地址)
-mllvm -irobf-cse C 字符串加密(String Encryption)
-mllvm -irobf-fla 控制流平坦化(Control Flow Flattening)
-mllvm -irobf-cie 整数常量加密(Constant Integer Encryption)
-mllvm -irobf-cfe 浮点常量加密(Constant Float Encryption)
-mllvm -irobf-rtti MS CXXABI RTTI 名称擦除(实验性)

使用方式:在「设置 → 编译设置」中开启对应的混淆选项即可。

📁 文件管理

  • 侧边栏文件浏览器
  • 支持新建文件/文件夹
  • 文件重命名、删除、复制路径
  • 快速定位当前文件
  • 记住上次打开的文件和目录
  • Git 状态显示(修改/新增/冲突等)

🔀 Git 集成

  • Git 仓库克隆(支持 HTTPS)
  • 私有仓库认证(用户名/密码/Token)
  • Git 凭据加密存储
  • 提交、推送、拉取操作
  • 分支管理
  • 远程仓库管理
  • 文件状态实时显示

📦 项目管理

  • 新建项目向导
  • Git 初始化选项
  • 最近项目列表
  • 项目配置保存和恢复
  • 自动保存功能(可配置间隔)

💻 终端模拟器

  • 完整的终端环境
  • 支持常用 Shell 命令
  • 可调节字体大小和样式
  • 底部快捷操作栏
  • 屏幕常亮选项
  • 自动加载插件环境变量

🤖 AI 助手

  • 右侧 AI 对话侧边栏(流式回复)
  • 支持 OpenAI 兼容 API(自定义 Base URL / Key / Model)
  • 工具调用支持编译、诊断、文件修改、符号/引用查询
  • 诊断缓存联动,可结合 clangd 错误进行修复建议

📦 APK 生成与签名

  • 支持将 C/C++ 程序打包为 APK
  • 支持应用图标、应用名、包名等元信息修改
  • 集成 APK 重打包与签名流程(含失败回退方案)
  • 支持一键安装生成的 APK

🧩 插件系统

  • 支持安装第三方插件(ZIP格式)
  • 插件 ABI 选择(arm64-v8a / x86_64)
  • 插件启用/禁用管理
  • 查看插件示例代码
  • 插件安装脚本(.install 文件)
  • 插件 Hook 系统(.hook 文件)
  • 编辑器补全模板扩展(completion)
  • 插件 PATH 环境变量自动注入

🔌 插件安装脚本

插件可以通过 .install 文件定义安装流程,支持交互式安装向导。

支持的节点类型

节点 说明
alert 弹窗提示
edit 单行输入框
select 单选/多选列表
if 条件判断分支
command 执行 Shell 命令
command_result 执行命令并获取结果(带 Loading)
grep 正则表达式匹配
add_path 添加环境变量路径
create_value 创建变量
run_in_terminal 在终端运行可执行文件

内置变量

变量 说明
${plugin_path} 当前插件安装目录
${plugin_name} 插件目录名
${files_dir} 应用 files 目录
${plugin_base} 插件根目录(files/plugin)
${cache_dir} 应用缓存目录
${external_files} 应用外部 files 目录
${current_file} 当前编辑器打开的文件路径(Hook 中可用)
${current_dir} 当前文件所在目录(Hook 中可用)

示例

{
  "install_before": [
    {"node": "alert", "title": "欢迎", "message": "即将安装 NDK 插件"}
  ],
  "install_start": [
    {"node": "command", "sh": "tar -xzf ${plugin_path}/ndk.tar.gz"}
  ],
  "install_after": [
    {"node": "add_path", "export": "${plugin_path}/bin"}
  ]
}

🪝 插件 Hook 系统

插件可以通过 .hook 文件在特定事件时执行自定义操作。

支持的 Hook 类型

Hook 说明 版本
menu 添加编辑器右上角菜单项 v1.0.2+
run_menu 添加运行按钮下拉菜单项 v1.0.3+
toolbar 添加工具栏按钮 v1.0.4+
on_compile_before 编译前执行 v1.0.2+
on_compile_success 编译成功后执行 v1.0.2+
on_compile_error 编译失败后执行 v1.0.2+
on_run_before 运行前执行 v1.0.2+
on_app_init 应用启动时执行 v1.0.4+
on_editor_completion_request 编辑器触发补全请求时执行 v1.1.1+

completion 模板扩展

插件可在 .hook 中定义 completion 数组,为指定语言追加补全项(如 C/C++ 模板片段)。

{
  "completion": [
    {
      "language": "cpp",
      "trigger": "vec",
      "label": "std::vector 模板",
      "desc": "快速插入 vector 代码",
      "insert": "std::vector<int> v;"
    }
  ]
}

菜单 Hook 示例

{
  "menu": [
    {
      "title": "NDK编译",
      "position": "start",
      "onClick": [
        {
          "node": "command_result",
          "sh": "ndk-build",
          "dir": "${current_dir}",
          "loading": "正在编译...",
          "success": [
            {"node": "alert", "title": "成功", "message": "${cmd_output}"}
          ],
          "error": [
            {"node": "alert", "title": "失败", "message": "${cmd_error}"}
          ]
        }
      ]
    }
  ]
}

事件 Hook 示例

{
  "events": {
    "on_compile_success": [
      {"node": "command", "sh": "echo '编译成功' >> ${plugin_path}/log.txt"}
    ]
  }
}

📱 系统要求

  • Android 8.0 (API 26) 及以上
  • 支持架构:arm64-v8a、x86_64
  • 存储空间:建议 300MB+(Clang 工具链 + 可选 Build Tools)
  • 需要存储权限(访问文件系统)

🚀 快速开始

安装

  1. 下载 Akode_x.x.x_release.apk
  2. 安装 APK(可能需要允许安装未知来源应用)
  3. 首次启动会自动安装 Clang 工具链,请耐心等待
  4. 如需 CMake/Make/Ninja,可在「设置 → 编译设置 → 安装编译工具」中安装

编写第一个程序

  1. 点击主页的「代码编辑器」进入编辑器
  2. 编写你的 C/C++ 代码,例如:
#include <stdio.h>

int main() {
    printf("Hello, Akode!\n");
    return 0;
}
  1. 点击工具栏的运行按钮(▶)编译并运行

📘 使用指南

编辑器操作

操作 说明
左滑屏幕边缘 打开文件浏览器
点击标题栏文件名 切换已打开的文件
长按标题栏文件名 查看完整文件路径
长按保存按钮 另存为
底部符号栏 快速输入常用符号

文件浏览器

操作 说明
点击文件夹 进入目录
点击文件 打开文件
长按文件/文件夹 显示操作菜单(重命名、删除、复制路径等)
点击路径栏 手动输入路径跳转
长按路径栏 复制当前路径
📍 按钮 定位到当前文件所在目录
➕ 按钮 新建文件
📁 按钮 新建文件夹

编译运行

操作 说明
▶ 运行按钮 编译并运行当前文件
长按运行按钮 设置运行参数
编译模式切换 单文件模式 / 多文件模式
运行按钮下拉菜单 执行插件注入的 run_menu 操作

终端操作

操作 说明
底部工具栏 常用快捷键(Tab、Ctrl、Alt 等)
双指缩放 调整字体大小
长按屏幕 粘贴文本

插件管理

操作 说明
➕ 按钮 安装插件(选择 ZIP 文件)
点击插件 查看插件示例代码
卸载按钮 删除插件
点击 ABI 标签 切换插件 ABI(多 ABI 时显示)
开关按钮 启用/禁用插件

⚙️ 设置选项

编辑器设置

  • 记住上次打开的文件:下次启动时恢复上次的文件和目录
  • 自动保存:自动保存已修改文件(可配置保存间隔)
  • 编辑器字体大小:12-24sp 可选
  • 编辑器主题:Darcula(暗色)等主题
  • 启用 LSP 语义分析:开启 clangd 的诊断/跳转/引用能力

终端设置

  • 终端字体大小:10-24sp 可选
  • 终端字体:Monospace、Sans Serif、Serif
  • 显示底部操作栏:控制快捷键栏显示

编译设置

  • 安装编译工具:安装 CMake / Make / Ninja
  • 编译命令管理:自定义编译和运行命令
  • Clang 编译参数:C/C++ 通用编译参数
  • Android API Level:目标 Android API 版本(21-35,默认 21)

代码混淆(OLLVM)

  • 支持 -mllvm -irobf-* 系列开关(indbr / icall / indgv / cse / fla / cie / cfe / rtti)
  • 可按需开启单项,避免一次性叠加导致编译或运行问题

功能设置

  • 启用 Root 运行:使用 su 以 root 权限执行程序
  • 自定义 SU 命令:Root 运行时使用的 su 命令(默认:su -c
  • 启用日志:开启终端操作日志记录
  • 保持屏幕常亮:终端运行时保持屏幕不熄灭

AI 助手

  • API 地址 / Key / 模型:支持 OpenAI 兼容接口配置
  • 测试连接:快速校验当前 API 配置
  • 内置开发工具:支持编译、诊断、读写文件、符号与引用查询等

高级设置

  • 清除缓存:清除应用缓存和临时文件
  • 导出日志:导出终端操作日志文件

🔌 插件开发

插件结构

plugin.zip
├── .config          # 插件配置文件(JSON格式,必需)
├── .install         # 安装脚本(JSON格式,可选)
├── .hook            # Hook 配置(JSON格式,可选)
├── .path            # 环境变量路径(安装后自动生成)
├── lib/
│   ├── arm64-v8a/   # arm64 架构的 .so 文件
│   └── x86_64/      # x86_64 架构的 .so 文件
├── include/         # 头文件
└── example/         # 示例代码

配置文件格式(.config)

{
  "plugin_code": "my_plugin",
  "plugin_name": "我的插件",
  "plugin_version": "1.0.0",
  "plugin_describe": "插件描述",
  "author": "作者名称",
  "github": "https://github.com/xxx/xxx",
  "support_ABI": ["arm64-v8a", "x86_64"]
}

安装脚本格式(.install)

详见 插件安装脚本文档

Hook 配置格式(.hook)

详见 插件安装脚本文档(Hook 系统部分)

📝 更新日志

v1.1.2

  • 基础能力升级
    • 移除该死的压缩机制调整为更快速的解压机制
    • 调整zsh安装的缓存bug导致最后一秒贼慢的问题
    • 调整插件管理安装插件过大导致的解压异常耗时,fuck掉了
    • 调整了一个不起眼的bug
    • 修复了键盘在某些时候抽风导致的输入不了问题

v1.1.1

  • 混淆与构建链升级
    • OLLVM 参数升级为 iROBF 系列开关(-mllvm -irobf-*
    • 构建配置集成 BlackObfuscator 与 StringFog 字符串加密
    • Release 包按 ABI Flavor 输出(aarch64 / x86_64)
  • 插件系统增强
    • 新增编辑器补全模板能力(.hookcompletion 字段)
    • Hook 事件新增 on_editor_completion_request
    • 运行菜单支持 SVG 图标与起止位置控制
  • 终端与工具链优化
    • 终端支持自动接入插件 PATH 与 Build Tools 环境
    • 新增 Build Tools 安装器(CMake/Make/Ninja)
    • 改进 zsh 环境初始化与登录 shell 启动流程
  • AI 辅助能力扩展
    • 扩展 AI 工具注册表与权限分级(只读/破坏性)
    • 增强诊断读取、补丁应用、工程级文件操作工具

v1.1.0

  • 项目导入和管理功能

    • 实现项目导入对话框,支持手动输入路径和文件夹浏览
    • 集成 DocumentFile API 用于文件选择器功能
    • 添加项目长按删除功能,支持仅删除配置或整个项目文件夹
    • 增加导入项目菜单项和相应的处理逻辑
    • 实现 URI 路径解析和项目路径验证功能
    • 添加 third.json 配置文件的创建和读取
    • 扩展最近项目管理器支持全局项目列表
    • 引入 slf4j 日志记录功能
  • APK 生成和签名功能

    • 集成 FileProvider 支持文件分享功能
    • 实现完整的 APK 生成流程,包括源码编译、模板处理和文件注入
    • 创建 Material Design 3 风格的进度对话框,支持丝滑动画效果
    • 添加 ARM64 架构编译支持和可执行文件注入功能
    • 实现 APK 安装功能,支持 Android 7.0 以上版本的 FileProvider
    • 添加文件管理器集成和路径复制功能
    • 实现临时文件自动清理机制
    • 优化进度更新逻辑,支持分步骤进度显示
    • 新增 ApkParser 类实现 APK 文件元数据解析功能
    • 新增 ApkRepackager 类实现 APK 重打包流程控制
    • 新增 ApkUtils 类提供 APK 文件操作工具方法
    • 新增 BinaryXmlEditor 类使用 ARSCLib 修改二进制 XML 文件
    • 新增 CertificateBuilder 类使用 BouncyCastle 生成证书
    • 新增 CustomApkSigner 类使用 Google apksig 库进行签名
  • AI 辅助开发工具

    • 新增编译代码工具(compileCode)支持文件编译验证
    • 新增获取诊断信息工具(getDiagnostics)显示错误警告
    • 新增创建文件工具(createFile)支持动态文件生成
    • 新增符号列表工具(getSymbols)分析代码结构
    • 新增重命名文件工具(renameFile)支持文件重构
    • 新增删除文件工具(deleteFile)管理项目文件
    • 新增查找引用工具(findReferences)追踪符号使用
    • 添加诊断信息缓存机制供 AI 访问
    • 扩展 AI 系统提示包含 C++ 开发专业指导
    • 集成 clangd LSP 诊断验证流程
  • 构建配置和 CMake 功能

    • 更新 targetSdk 至 34 以支持 Android 15
    • 调整混淆配置,降低混淆深度并增加保护规则
    • 在 CMake 对话框中添加编译并运行选项
    • 修复项目删除对话框的空指针异常问题
    • 使用 libs.versions.toml 管理依赖版本
    • 为 CMake 编译添加 ScrollView 滚动支持
    • 修改 release 构建配置,使用 proguard-android.txt 替代 proguard-android-optimize.txt
    • 在 debug 模式下禁用代码混淆和资源压缩,便于调试
    • 启用 BlackObfuscator 混淆功能
  • ClangdClient 优化

    • 在 ClangdClient 中添加 ensureExecutorAvailable 方法确保执行器可用
    • 在所有异步操作前调用 ensureExecutorAvailable 检查执行器状态
    • 修改 stop 方法不立即关闭 executor,避免新请求冲突
    • 添加 cleanup 方法用于完全清理资源
    • 在 EditorActivity 中启用 OLLVM 混淆参数进行 C++ 编译

v1.0.9

  • Bug 修复与优化

    • 修复多项已知 Bug,提升应用稳定性
    • 优化内存管理,减少内存占用
    • 改进编译器错误提示准确性
  • Clang 配置优化

    • 优化 Clang 默认编译参数配置
    • 改进 Clang 格式化配置文件
    • 提升编译性能和代码生成质量
  • 定制化功能支持

    • 增强编译参数定制化能力
    • 支持更灵活的插件配置选项
    • 优化用户自定义设置体验

v1.0.8

  • 新增 Tools 工具链

    • 新增cmake编译器
    • 新增make支持
    • 新增ninja支持
    • 完善fla在大部分情况加密报错
  • UI 优化

    • 优化对话框输入框样式
    • 优化主页主题

v1.0.7

  • 新增 OLLVM 混淆 Clang 工具链
    • 基于 Clang 18.1.8 + OLLVM 混淆器
    • 支持代码混淆保护,增强逆向难度
    • 自动检测工具链版本,版本不匹配时提示重新安装
  • 支持的混淆参数
    • -mllvm -fla:控制流平坦化(Control Flow Flattening)
    • -mllvm -sub:指令替换(Instruction Substitution)
    • -mllvm -bcf:虚假控制流(Bogus Control Flow)
    • -mllvm -ibr:间接分支(Indirect Branching)
    • -mllvm -sobf:字符串混淆(String Obfuscation)
    • -mllvm -split:基本块分割(Basic Block Splitting)
    • -mllvm -split_num=3:指定分割次数
  • 编辑器优化
    • 更优秀的代码补全策略,提升补全准确性和响应速度
    • 支持快捷键拆解多行(选中代码后快速拆分)
    • 支持快速格式化代码(基于 clang-format)
  • UI 优化
    • 优化对话框输入框样式,更符合 M3 设计规范
    • 对话框按钮颜色统一为 M3 紫色
    • 新建项目页面自动聚焦到项目名称输入框
    • 项目名称支持中文命名

v1.0.6

  • 修复大屏设备输入法焦点问题
    • 添加 onWindowFocusChanged 回调方法
    • 修复 iPad 等大屏设备点击唤起输入法后焦点丢失的问题
  • 编译进度对话框深色主题适配
    • 根据当前编辑器主题动态设置对话框背景色
    • 动态调整进度指示器颜色和轨道颜色
    • 文本颜色随主题自动切换
    • 编译错误信息对话框主题颜色适配
  • **更新修复
    • 修复更新弹窗主题

v1.0.5

  • 新增 Git 集成功能
    • 支持 Git 仓库克隆(支持私有仓库认证)
    • Git 凭据管理(加密存储)
    • Git 提交、推送、拉取操作
    • 分支管理功能
    • 文件列表显示 Git 状态标识(M/A/U/C 等)
  • 新增项目管理功能
    • 新建项目向导(支持 Git 初始化选项)
    • 最近项目列表
    • 项目配置保存和恢复
  • 新增 Android API Level 配置
    • 支持 API 21 到 API 35 版本选择
    • 编译器目标参数可配置
  • 新增应用内版本更新
    • 自动检查 GitHub releases 版本
    • 支持 APK 下载和安装
    • Markdown 格式发布说明渲染
  • 新增自动保存功能
    • 支持定时静默保存文件
    • 可配置保存间隔
  • 优化编译器参数处理
    • 区分 C 和 C++ 文件编译参数
    • 自动过滤 C++ 专用参数
  • UI 优化
    • 工具栏响应式布局(窄屏适配)
    • 暗色主题对话框样式统一
    • 远程仓库添加对话框

v1.0.4

  • 重大升级:将编译链从 GCC 升级为 Clang,提供更好的编译性能和错误提示
  • 新增 C++17 标准支持,可在编译参数中选择 -std=c++17
  • 优化 Makefile 文件读取,修复 mk 文件解析问题
  • 新增 toolbar Hook,支持在工具栏添加自定义按钮
  • 新增 on_app_init Hook,支持应用启动时执行初始化操作
  • 优化编译缓存机制,提升编译速度
  • 改进错误提示和日志输出
  • 优化内存使用,减少应用占用空间

v1.0.3

  • 新增插件 author 字段支持,显示插件作者信息
  • 新增 run_menu Hook,支持在运行按钮下拉菜单添加自定义项
  • 优化插件列表 UI,新增卸载按钮
  • 修复保存按钮点击无反应的问题
  • 修复首次启动状态栏显示紫色的问题
  • 修复首次打开编辑器显示白色主题的问题

v1.0.2

  • 新增 Clangd LSP 智能代码分析支持
  • 新增插件安装脚本系统(.install 文件)
  • 新增插件 Hook 系统(.hook 文件)
  • 新增插件 PATH 环境变量自动注入
  • 新增编辑器菜单 Hook 支持
  • 新增编译事件 Hook(编译前/成功/失败)
  • 新增运行事件 Hook(运行前)
  • 新增 command_result 节点(带 Loading 和结果分支)
  • 新增 grep 节点(正则表达式匹配)
  • 新增 run_in_terminal 节点(在终端运行文件)
  • 优化编译流程,支持编译缓存
  • 修复多项已知问题

v1.0.1

  • 初始版本发布
  • 基础代码编辑器功能
  • GCC/G++ 编译支持
  • 终端模拟器
  • 插件系统基础功能

🙏 致谢

Akode 的开发离不开以下开源项目:

👨‍💻 开发者

阿夜 - GitHub


如有问题或建议,欢迎反馈!

About

现代化C++编译器

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors