# 02 总体架构与部署拓扑 听文视频工作台 · 技术架构与实现 · 1.0.2 图示:Android默认进程+本机原生媒体子进程 Android默认进程+本机原生媒体子进程 载入本机页 start() 同源HTTP 桥调用 在线语音 可选收费图 安全导出 MainActivity 启动/页面/系统交互 WorkbenchService Chaquopy启动 · 通知 · WakeLock NativeBridge+导出层 路径复核 · SAF · 只读URI WebView前端 模板内联JS+mobile.js/CSS Flask回环服务 127.0.0.1:随机端口 · 双层鉴权 Python任务与素材处理 Control/WORKERS/RLock FFmpeg/FFprobe子进程 Pillow cover · H.264/AAC 应用私有文件 任务/草稿/素材/日志/账本 Edge在线TTS 正文+所选音色 Seedream(可选) 提示词+用户Key+付费同意 公开图片服务器 仅安全直链下载 Android系统文件目标 用户另存/主动分享 图2|系统运行架构。实线表示本机调用或数据流,虚线表示网络访问;远端TTS与可选AI服务不属于手机内置模型。小屏可横向滚动查看图示 ## 分层职责 层次 | 实现组件 | 职责 | 不承担的职责 | Android宿主层 | MainActivity、WorkbenchService、StartupAnimationView、ExportPolicy、ExportProvider | 生命周期、启动画面、WebView、系统选择器、通知、唤醒、另存与分享安全 | 不实现TTS模型、不承载远端账号授权 | 前端交互层 | Jinja模板中的内联JS、mobile.js、mobile.css | 文案和标题、音色、图片来源、状态展示、确认操作、草稿、四页导航 | 不作为唯一的验证或额度权威 | 本机服务层 | android_runtime.start、Flask app、guard | 手机私有回环服务、鉴权、JSON接口、资源和媒体返回 | 不面向局域网或互联网开放API | 业务调度层 | app.py、Control、WORKERS、ACTIVE、CONTROLS | 创建任务、线程调度、阶段状态、确认闸门、暂停/取消、恢复、素材保留 | 无持久化多任务队列、无OS JobScheduler | 素材处理层 | speech.py、photo_import.py、seedream.py、标题脚本 | 在线语音、输入图片安全、云端图像适配、画面绘制 | 无端侧大模型、无文字AI改写 | 媒体执行层 | Android FFmpeg/FFprobe PIE程序 | H.264/AAC编码、格式/时长/流探测、进度输出 | 无Android MediaCodec硬件编码分支 | 私有数据层 | JSON/JSONL、PNG、MP3、MP4 | 草稿、任务快照、语音片段、素材、成品、日志、试用账本 | 无SQLite/Room、无同步服务器 | ## 进程与线程 Activity、Service、WebView宿主和Chaquopy均处于默认应用进程,Manifest没有独立android:process声明。Service有单线程计划执行器,Python本机HTTP服务以daemon线程运行且请求处理支持线程;每个业务步骤由daemon线程执行,音频步骤内部运行asyncio事件循环。FFmpeg和FFprobe通过Python子进程执行,不由JNI媒体接口加载。 libffmpeg.so和libffprobe.so虽使用.so名字,实际是Android ELF64 PIE可执行程序。这个名称方便Android安装时将其提取到nativeLibraryDir;执行路径来自系统应用信息,不依赖PATH中另行安装FFmpeg。 Chaquopy作为Android Gradle插件将Python运行时、Python业务和对应ABI依赖打入APK;本项目使用Java API在宿主中启动与调用Python模块。Chaquopy 17 Gradle文档说明这一接入机制;具体版本和模块调用以本项目配置为准。 依据:app/build.gradle:9–55、AndroidManifest.xml:14–27、WorkbenchService.java:47–57、android_runtime.py:168–187、app.py:325–366。 --- 招商合作微信:wzqy2019。添加备注:听文合作。 原网页:https://tingwen-creator-studio-102.pages.dev/guide/technical-02