Skip to content

v0.3.1

Latest

Choose a tag to compare

@github-actions github-actions released this 28 Apr 15:14
· 8 commits to main since this release

Proot、独立导航与多标签

  • 插件 Proot 运行环境:插件清单新增 proot 配置,可声明独立插件 Ubuntu 环境或复用主 Proot 环境,并自动安装 apt 依赖、r2pm 包、Python venv 与自定义 setup 命令。
  • 自动准备与修复:安装/启用插件时会自动执行 Proot 依赖准备;插件页面也可手动触发准备或重试。安装标记迁移到 Proot 运行目录,并基于配置指纹记录,避免插件资源更新后重复弹出安装流程。
  • 插件运行 API 扩展:WebView、Schema 和 QuickJS 插件新增 prootEnsureprootRunprootAptprootVenvprootR2pmInstallprootR2prootProcStartprootPathInfo 等接口。
  • 项目级独立导航:插件现在可以在项目页底部导航/侧边栏中注册独立入口,并在入口内提供多标签页面;插件图标支持 Material 图标和插件内置 SVG/PNG/WebP 资源。
  • 插件动作更灵活:插件 AppBar 动作可按当前内置标签或插件标签显示;插件页面新增跳转到反汇编/地址、打开本地路径等能力,便于把分析结果直接联动到 R2Droid 主界面。

交互式入门教程

  • 首次启动引导:新增交互式教程提示,帮助新用户快速了解 R2Droid 的核心工作流。
  • 安全示例会话:教程会复制一份已安装的 r2 二进制到临时只读位置,以非写模式启动并启用缓存写入,用户可以安全练习而不会影响真实文件。
  • 覆盖主要操作:教程会逐步引导用户体验概览、列表筛选、地址跳转、Hex、反编译、反汇编、项目设置、日志与上滑命令面板。
  • 可重复播放:设置页新增“交互式新手教程”入口,可随时重新进入教程。

核心通信与分析稳定性

  • r2pipe 独立模块化:将 r2pipe stdio / HTTP 实现抽离为通用 :r2pipe-kotlin 模块,提供与 Android 无关的 R2PipeSession、日志和进程控制接口,R2Droid 侧只保留 Android 适配层。
  • stdio 缓冲优化:优化 r2pipe stdio 读取缓冲,使用更大的直接缓冲与溢出分块机制,改善大输出命令的吞吐和内存复用。
  • 命令日志更完整:R2PipeManager 统一记录执行命令与输出,流式命令执行结束后自动关闭输入流,降低资源泄漏风险。
  • Proot 模式 JSON 解析修复:增强 ij/iHj 等分析命令解析,自动剥离非 JSON 前缀,对可选字段失败进行降级处理,并修复部分 Proot 模式下概览解析失败的问题。
  • 函数地址兼容:函数模型兼容 addroffset 字段,提升不同 radare2 输出格式下的函数列表稳定性。

分析列表与项目界面改进

  • 新增 Exports 标签页:列表页新增导出符号(Exports)视图,支持搜索、刷新、地址跳转和统一的列表上下文操作。
  • 插件标签联动:插件注入的 List / Detail / Project / AI / R2Frida 标签在切换时状态更稳定,并支持从插件内容跳回内置 Detail/Disassembly 页面。
  • 教程与项目退出逻辑适配:教程示例会话不会触发保存项目的脏状态提示,避免新手流程被保存确认打断。

Proot 安装、更新与兼容性修复

  • 安装重试更可靠:Proot 安装对下载、解压、配置、包安装等阶段增加更细粒度状态与重试能力;损坏或不完整 rootfs 缓存会自动重新下载并重试解压。
  • 阶段标记与断点续装:已完成的 Proot setup 阶段会记录标记,后续重试可跳过已完成步骤,减少失败后的重复等待。
  • 错误信息更可诊断:安装失败信息现在包含网络连通性与 rootfs 来源 URL,方便定位 GitHub/Gitee、DNS 或离线问题。
  • Proot 运行环境兼容性:补充 apt sandbox、dpkg unsafe-io、/tmp//var/tmp、fake FIPS 等配置,提升不同 Android 设备上的 apt/r2pm 安装成功率。
  • 更新 APK 选择修复:更新检查会根据当前安装的是完整包还是 prootOnly 包,选择匹配的 APK,避免跨变体更新失败。

图标、通知、国际化与工程质量

  • 通知图标修复:优化前台保活通知的小图标与大图标,修复部分系统“流体云”/推广常驻通知中图标被渲染成白块的问题。
  • 应用图标资源整理:补充自适应图标前景、单色图标和不同构建变体的图标资源引用。
  • 国际化补充:完善教程、导出列表、插件 Proot 权限等中英俄翻译,并优化部分中文术语。
  • 测试覆盖提升:新增分析模型、反编译/图数据、C lexer、AI 动作执行器、LogManager、版本比较和 r2pipe 的单元/集成测试。
  • 依赖与仓库维护:升级 Kotlin 至 2.3.21、Compose BOM 至 2026.04.01,清理 IDE 配置跟踪,并更新 README 贡献者与项目状态。

社区贡献:

  • @binx6:提交依赖升级、中文术语修正和 Live Updates 文案细节优化。

This update focuses on plugin ecosystem expansion, onboarding, and runtime stability. After v0.3.0 introduced Proot support, v0.3.1 completes more of the plugin/Linux runtime story and improves r2pipe, install retries, update variant selection, and notification icon rendering.

1. Plugin System Enhancements: Proot, Navigation, and Multi-Tab Pages

  • Plugin Proot Runtime: Plugin manifests can now declare a proot section to use either a dedicated plugin Ubuntu environment or the main R2 Proot environment, with automatic setup for apt packages, r2pm packages, Python venvs, and custom setup commands.
  • Automatic Prepare & Repair: Proot dependencies run automatically when installing or enabling plugins. Plugin pages can also trigger prepare/retry manually. Setup markers now live in the Proot runtime and are fingerprinted by configuration, preventing repeated setup prompts after plugin asset updates.
  • Expanded Plugin Runtime APIs: WebView, Schema, and QuickJS plugins gained prootEnsure, prootRun, prootApt, prootVenv, prootR2pmInstall, prootR2, prootProcStart, prootPathInfo, and related APIs.
  • Project-Level Plugin Navigation: Plugins can now register standalone entries in the project bottom bar / navigation rail, with their own multi-tab pages. Icons support Material names as well as plugin-bundled SVG/PNG/WebP assets.
  • More Flexible Plugin Actions: Plugin AppBar actions can be scoped to built-in or plugin tabs. Plugin pages can jump to Disassembly/address targets and open local paths through FileProvider, making analysis results easier to connect back to the main R2Droid UI.

2. Onboarding: Interactive Tutorial

  • First-Run Guide: Added an interactive tutorial prompt to help new users quickly understand the main R2Droid workflow.
  • Safe Demo Session: The tutorial analyzes a temporary read-only copy of the installed r2 binary. It starts without write mode and uses cached writes, so users can practice safely without touching real files.
  • Covers Core Flows: The walkthrough covers Overview, list filtering, jumping, Hex, decompiler, disassembly, project settings, logs, and the swipe-up command panel.
  • Replayable from Settings: A new “Interactive Tutorial” entry in Settings lets users restart the guided tour at any time.

3. Core Communication & Analysis Stability

  • Standalone r2pipe Module: Extracted stdio / HTTP r2pipe support into the Android-independent :r2pipe-kotlin module, exposing R2PipeSession, pluggable logging, and process-control hooks while keeping Android-specific code in the app adapter layer.
  • Optimized stdio Buffering: Improved r2pipe stdio reading with larger direct buffers and overflow chunks, increasing throughput and reducing buffer churn for large command outputs.
  • More Complete Command Logs: R2PipeManager now records executed commands and outputs consistently, and stream commands close their input streams after use.
  • Proot JSON Parsing Fixes: Analysis parsing now strips non-JSON prefixes, gracefully falls back for optional fields, and fixes overview parsing failures seen in some Proot-mode outputs.
  • Function Address Compatibility: Function models now accept both addr and offset, improving stability across different radare2 output formats.

4. Analysis Lists & Project UI Improvements

  • New Exports Tab: Added an Exports list view with search, refresh, address navigation, and unified list context actions.
  • Plugin Tab Integration: Plugin-injected List / Detail / Project / AI / R2Frida tabs keep state more reliably and can jump back into built-in Detail/Disassembly pages.
  • Tutorial-Aware Project Flow: Tutorial demo sessions no longer trigger dirty-project save prompts, keeping the onboarding flow uninterrupted.

5. Proot Installation, Updates & Compatibility Fixes

  • More Robust Install Retry: Proot setup now exposes more granular stages and retry behavior. Corrupted or incomplete rootfs caches are re-downloaded automatically and extraction is retried once.
  • Stage Markers & Resume: Completed Proot setup stages are marked, allowing later retries to skip work that already succeeded.
  • More Diagnosable Errors: Install failures now include network connectivity status and the rootfs source URL to help diagnose GitHub/Gitee, DNS, or offline issues.
  • Proot Runtime Compatibility: Added apt sandbox, dpkg unsafe-io, /tmp//var/tmp, and fake FIPS configuration to improve apt/r2pm success rates across Android devices.
  • Correct Update APK Variant: The updater now selects the APK matching the currently installed variant, avoiding full/prootOnly cross-update failures.

6. Icons, Notifications, Localization & Quality

  • Notification Icon Fixes: Improved keep-alive notification small and large icons, fixing cases where OEM “fluid cloud” / promoted ongoing notification surfaces rendered the icon as a white block.
  • Launcher Icon Cleanup: Added adaptive foreground, monochrome, and variant-specific icon resources.
  • Localization Updates: Added and refined Chinese, English, and Russian strings for the tutorial, Exports tab, plugin Proot permission, and related UI.
  • More Test Coverage: Added unit/integration tests for analysis models, decompiler/graph data, C lexer, AI action execution, LogManager, version comparison, and r2pipe.
  • Dependency & Repository Maintenance: Updated Kotlin to 2.3.21 and Compose BOM to 2026.04.01, stopped tracking IDE configuration files, and refreshed README contributor/project status information.

community contributors for this release:

  • @binx6: For dependency upgrades, Chinese terminology fixes, and Live Updates text polish.