Proot、独立导航与多标签
- 插件 Proot 运行环境:插件清单新增
proot配置,可声明独立插件 Ubuntu 环境或复用主 Proot 环境,并自动安装apt依赖、r2pm包、Python venv 与自定义 setup 命令。 - 自动准备与修复:安装/启用插件时会自动执行 Proot 依赖准备;插件页面也可手动触发准备或重试。安装标记迁移到 Proot 运行目录,并基于配置指纹记录,避免插件资源更新后重复弹出安装流程。
- 插件运行 API 扩展:WebView、Schema 和 QuickJS 插件新增
prootEnsure、prootRun、prootApt、prootVenv、prootR2pmInstall、prootR2、prootProcStart、prootPathInfo等接口。 - 项目级独立导航:插件现在可以在项目页底部导航/侧边栏中注册独立入口,并在入口内提供多标签页面;插件图标支持 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 模式下概览解析失败的问题。 - 函数地址兼容:函数模型兼容
addr与offset字段,提升不同 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
prootsection to use either a dedicated plugin Ubuntu environment or the main R2 Proot environment, with automatic setup foraptpackages,r2pmpackages, 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
r2binary. 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-kotlinmodule, exposingR2PipeSession, 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
addrandoffset, 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.