技能要求:
Flutter,Kotlin
经验要求:
5-10年经验
工作描述:
项目编号:【174418】
项目语言:Flutter(UI)Rust(核心逻辑)
Kotlin(安卓原生开发)
1. 平台裁剪与结构简化
•目标: 项目仅面向 Windows 控制端与 Android 被控端运行,不涉及 iOS、Linux、macOS 等平台。
•操作内容:
•清理非目标平台相关源码、资源、构建脚本。
•优化项目目录结构,仅保留 core、windows、android、flutter UI 四大模块。
•开发提示:
•删除后重新配置 build.gradle / CMake / Flutter 路由注册逻辑,防止爆红。
⸻
2. 自动上线识别与设备卡片显示
•目标: 安卓端开启权限后,控制端自动识别并显示设备信息卡片。
•卡片内容包括: 设备名称、IP、系统版本、电量、网络状态、上线时间。
•掉线自动移除,重连自动恢复。
•开发提示: 安卓端定时上报状态(5s)到控制端;控制端按设备ID缓存并刷新 UI。
⸻
3. 优先局域网直连,跨网自动中继
•目标: 在用户无需干预下自动建立连接,优先本地,失败后使用中继服务器。
•逻辑流程:
•控制端广播扫描局域网(UDP / mDNS)
•若局域网发现设备,则建立直连
•否则连接写死的中继服务器
•开发提示:
•中继地址、端口、密钥写死在配置常量中,使用 RustDesk 原生 relay 模块或自建 TCP+UDP relay。
•连接超时不超过 3 秒,避免失败体验。
⸻
4. 权限状态同步与可视图标
•目标: 控制端显示设备权限状态并实时更新。
•同步字段:
•无障碍服务、悬浮窗、电池优化、自启动、通知权限、文件访问
•状态图标: 绿色=已获取,灰色=未获取;可点击查看详情。
•开发提示:
•安卓端使用 Accessibility + Settings API 检查状态,打包 JSON 传给控制端。
•控制端绘制图标区域,并支持悬浮提示。
⸻
5. 自动权限引导模块(构建时可选)
•目标: 打包时可选择是否集成自动引导模块,用于自动跳转并操作权限授权页面。
•流程:
•启用后,辅助功能激活 → 背景图提示加载 → 自动跳转 → 模拟点击“允许”按钮
•可自定义: 背景图与提示文字
•开发提示:
•使用 AccessibilityService 获取界面节点,通过文本关键字或 resource-id 定位“开启”、“允许”按钮并执行 performClick。
•品牌适配层配置关键词列表,支持小米、华为、vivo、OPPO、三星等。
⸻
6. 前台保活与自唤起机制
•目标: 保证被控端服务在关屏/杀后台后依然常驻运行。
•方案组合:
•前台服务(通知栏)+ JobService 周期拉起
•开机广播注册 + 异常恢复监听(守护进程机制)
•开发提示:
•兼容不同品牌的电池管理策略;合理配置前台通知避免误杀。
⸻
7. 自定义打包功能 + 首次引导页编辑
•控制端功能入口:
•自定义:App 名称 / 包名 / 版本号 / 图标 / 通知文字 / 首次启动跳转网址 / 是否启用权限引导模块
•打包完成后提供 APK 二维码下载
•引导页功能:
•首次运行如未开启辅助功能 → 显示引导页
•支持编辑图标、文字说明、自定义 UI 样式
•开发提示:
•后端可用 Python-Flask 或 NodeJS 实现自动化打包器,将字段写入 AndroidManifest.xml 和资源目录。
⸻
8. 显示遮罩功能
•目标: 控制端可开启遮罩模式,安卓端被完全遮盖,仅显示提示信息或图案。
•功能点:
•自定义背景图 + 文本
•开启“禁止本地触控”开关:限制目标设备响应触控操作
•开发提示:
•使用 SYSTEM_ALERT_WINDOW 权限显示全屏悬浮窗口,监听触控并拦截。
•控制端可实时开关该模式,状态需回传显示。
⸻
9. 屏幕内容结构读取功能
•目标: 控制端可查看安卓当前屏幕中的文本和控件结构,用于分析或导航。
•技术实现:
•被控端通过 Accessibility 抽取 View 树结构,上传控件名、坐标、文本、包名。
•控制端将其绘制为可视化层级图,可点击查看元素详情。
•开发提示:
•定期更新(如每3s),或在页面变化时主动推送结构更新。
⸻
10. 摄像头远程查看功能
•目标: 控制端可远程打开安卓前/后摄并实时查看图像。
•功能点:
•实时画面预览、前后切换、关闭摄像头
•开发提示:
•使用 CameraX + SurfaceTexture 推流 + WebRTC 或 MJPEG
•权限不足时引导授权,需处理生命周期状态避免黑屏。
⸻
11. 屏幕亮起 + PIN模拟输入
•目标: 控制端可唤醒设备并模拟数字密码输入(如锁屏解锁)。
•流程:
•远程下发唤醒指令 → 打亮屏幕 → 使用辅助功能模拟数字键盘输入 PIN → 回车解锁
•开发提示:
•避免操作失效,需判断当前是否锁屏状态 + 兼容不同锁屏界面结构(部分定制ROM有差异)
⸻
12. 控制端 UI 优化 + 动态 Logo 接入
•目标:
•替换控制端 Logo 为动效版本(SVG 动画、Lottie 动画均可)
•精简 UI 设置项,仅保留与安卓设备控制相关的功能选项
•开发提示:
•UI 风格采用深色现代扁平化风格
•设置项按模块归类,如【连接设置】【权限状态】【远程功能】【构建APK】等