在 Android 系统定制开发中,预置第三方应用(如 Google TTS)并将其设置为系统默认的语音合成引擎是一项常见需求。 本文将介绍如何通过 Android.bp、Makefile 以及 init.rc 脚本来实现这一功能。
完整文档,分享: pan.baidu.com/s/1rEhhb6SL… 提取码:2kcs
一、 整体文件结构 为了保持系统源码的整洁,建议将预置应用和相关配置文件放置在专有的 vendor 或者是 device 厂商目录下。
<your_vendor_path>/ ├── prebuilt/ │ └── apps/ │ └── GoogleTTS/ │ ├── googleTTS.apk # APK 原型文件 │ └── Android.bp # 编译脚本 └── common/ ├── common.mk # 核心 Makefile └── rootdir/ └── etc/ └── init.tts.rc # 开机初始化脚本
二、 具体实现步骤
- 编写 Android.bp 实现预置 在 GoogleTTS 目录下创建 Android.bp。由于 Google TTS 通常自带签名,我们需要使用 presigned: true 来保留原厂签名,避免系统签名冲突。
代码段 android_app_import { name: "GoogleTTS", apk: "googleTTS.apk", presigned: true, // 使用原厂签名 dex_preopt: { enabled: false, // 视情况决定是否关闭预优化 }, privileged: true, // 如果需要作为特权应用,设为 true product_specific: true, // 根据项目实际分区选择(如 product 或 vendor) } 2. 配置 Makefile 引入编译与拷贝 找到你厂商的公共配置文件(如 common.mk 或 device.mk),将刚刚定义的模块加入到系统编译中,并配置 init.rc 脚本的拷贝规则。
三. 通过 init.rc 设置开机默认 TTS 引擎
在 Android 中,默认 TTS 引擎是由 Settings Provider 管理的(对应 Settings.Secure 中的 tts_default_synth)。我们可以在系统开机时通过 settings 命令进行初始化设置。
创建 init.tts.rc 文件:
代码段 on property:sys.boot_completed=1 # 设置 Google TTS 为系统默认语音合成引擎 exec
本文完。感谢阅读!