技术 / 架构与实现

21 工具链、依赖、原生兼容与许可证

基于 Android 1.0.2 / 1.0.2-trial · 2026-10-10 · 完整正文

实际打包依赖

组件 固定配置/版本 用途
Android Gradle Plugin 8.9.3 APK编译打包
Gradle 8.13 构建执行
Java 编译/目标17;保留Zulu17.0.14工具链 原生宿主编译
Chaquopy 17.0.0 CPython和Python依赖打包
Python 3.11系列 业务运行时
Flask 3.1.2 本机服务与模板
Pillow 11.0.0 图像解码、加工、字体
edge-tts 7.2.3 在线TTS协议接入
aiohttp 3.10.10 异步网络依赖
FFmpeg 7.1.2 编码/探测
x264 保留stable精确快照,API165 软件H.264编码
NDK 28.2.13676358 两种Android原生ABI构建
CMake 3.22.1(Pillow兼容库构建) FreeType/JPEG构建
字体 NotoSansCJKsc-Bold.otf 中文大标题

一级pip依赖用精确版本pin,但未发现传递依赖的完整hash lock,不能声称整个Python依赖图在任意新环境字节完全可重现。旧docs/PC回归测试.md写aiohttp3.9.5已陈旧;当前app/build.gradle和实际release staging均为3.10.10。主机测试虚拟环境的依赖版本可能更高,不应拿来填APK依赖表。

原生媒体构建

保留FFmpeg7.1.2与x264精确上游源归档及SHA256SUMS,不依赖会移动的stable分支重新取源码。NDK交叉编译默认API24、arm64-v8a/x86_64;ARM64使用NEON汇编,x86_64禁汇编以避NASM依赖。FFmpeg静态链接x264,Android libc/libm/libz等系统库动态链接。

构建启用GPL/libx264并用disable-everything配白名单:文件/pipe协议、concat/image2及必要音频/MP4解复用、PNG/JPEG/MP3/PCM/AAC/H.264解码、libx264/AAC编码、MP4/MOV封装、loop/tpad/fps/trim等滤镜。没有网络媒体解码protocol,也未启用Android硬件编码器;图片网络行为在Python执行。

16KB兼容:两个不同层次

  1. ELF层:各原生对象的LOAD段以0x4000对齐。FFmpeg/FFprobe可执行程序另核对PIE及Android64位动态链接器interpreter;Pillow依赖共享库核对SONAME、ABI、导入/导出符号与版本节点,不能要求共享库也具备可执行入口。
  2. APK ZIP层:用zipalign的-P 16核对打包对齐;解包或zip对齐通过不能替代原生ELF和Python扩展的加载兼容。

FFmpeg/x264链接器传max-page-size/common-page-size=16384。Pillow原wheel部分FreeType/JPEG库较旧,项目保留对应API/SONAME的FreeType2.9.1与libjpeg-turbo1.5.3源码,NDK重建16KB兼容库,核对导出符号及Pillow所需符号。JPEG portable C关闭SIMD是兼容取舍,不能承诺性能等于原平台库。

Gradle跟踪native-compat输入,在installPythonRequirements任务完成后按ABI覆盖生成staging中的库;不手改pip生成目录后假装可重建。静态verify-binaries报告runtime_verified=false,说明不是设备加载测试。Android官方说明了含原生库应用的16KB适配背景:16KB页大小支持。

许可证和对应源

本FFmpeg构建因启用libx264/GPL按GPLv2或更高版本分发,x264也有相应GPL许可;项目保存许可证、精确源归档、构建脚本与来源SHA。Pillow依赖保留FreeType FTL及GPL替代说明、JPEG相关notice;Noto字体附OFL文本。APK资源同步包含需要的许可说明。

本节陈述打包组件的许可与保留资料,不能将其误解为完整法律审定。分发原生组件时,应保留对应源、通知和构建说明给接收方;不应只交一个无对应资料的媒体可执行程序。

依据:build.gradle、app/build.gradle、gradle-wrapper.properties、native-sources/README.md、licenses/README.md、native-compat/README.md、scripts/build-media.sh、scripts/build-pillow-libs.sh。

把这些功能用到你的内容里。

免费试用、正式版优惠授权与招商合作:微信 wzqy2019。说明你需要配音、照片视频、PC或Android端,我们一起确定适合的使用方式。

合作从一次沟通开始

让你的内容制作,
找到合适的工作台。

免费试用、优惠授权、PC与Android版本、工作室及渠道合作意向,欢迎直接咨询。

打开微信,搜索 wzqy2019,添加时备注“听文合作”。具体授权、价格与合作政策以沟通为准;本站不收款。