乐于分享
好东西不私藏

MIUI打包APK后TTS朗读器无声?App Inventor 2 中文网已从底层修复这个原版顽疾

MIUI打包APK后TTS朗读器无声?App Inventor 2 中文网已从底层修复这个原版顽疾

🔥 一个困扰无数开发者的原版顽疾——MIUI打包APK后TTS无声,App Inventor 2 中文网已从底层修复。

问题现象:很多开发者踩过的坑

如果你在使用 App Inventor 2 开发应用时遇到过以下情况——

AI伴侣测试:文本朗读器(TextToSpeech)一切正常,能读能说

打包成APK安装后:完全没有声音,按按钮也没反应

📱 换了几台小米手机都一样,MIUI 14系统

🔄 三星等其他品牌手机正常,无需额外设置权限

你并不是一个人。这个问题在社区中被反复反馈,无数开发者花了大量时间排查权限、重装TTS引擎、调整手机设置,都无济于事。

因为这不是你的代码问题,也不是权限问题。

用户实遇:从困惑到无奈

一位用户在论坛发帖求助:

"在AI伴侣测试的时候是有声音的,打包成Apk安装完是没有声音的,按按钮也是没有反应的。"

"我换了几台手机也一样。"

"我让其获取了声音和读取媒体声音的权限,但是依旧没有进行朗读行为。"

可以看到,用户尝试了所有能想到的办法——授权、换手机、重新打包——全都没用。

根因分析:Android 11+ 包可见性限制

经过深入排查,我们定位到了真正的根因:Android 11(API 30)引入的包可见性(Package Visibility)限制。

什么是包可见性?

Android 11 开始,应用要"看见"并绑定另一个应用提供的服务(比如系统TTS引擎),必须在自身清单文件(AndroidManifest.xml)中通过 <queries> 标签显式声明。

通俗来说:你的应用想用系统的朗读引擎,就得先在"申请表"上写明"我要用TTS服务"。没写?系统就当你看不见这个服务。

原版App Inventor 2的问题

📌 TextToSpeech组件缺少了 @UsesQueries(TTS_SERVICE) 声明

📌 编译出的APK清单中没有对应的 <queries> 标签

📌 系统认为APK"看不见"TTS引擎 → 绑定失败 → init静默失败 → 无声

为什么AI伴侣正常?

AI伴侣(Companion)是预装的完整应用,其清单文件本身就带有TTS相关的queries声明,所以它在任何机型上都能正常绑定TTS引擎。而你打包出的独立APK,因为组件定义中缺少了这个声明,自然就"看不见"TTS服务了。

为什么三星可以、小米不行?

这跟权限无关(TTS本身不需要特殊权限),而是各手机厂商对包可见性过滤的严格程度不同

手机品牌 AI伴侣 打包APK(修复前) 打包APK(修复后)
小米(MIUI) ✅ 正常 ❌ 无声 ✅ 正常
三星(OneUI) ✅ 正常 ✅ 碰巧能用 ✅ 正常

MIUI执行包可见性过滤最严格,所以问题最先暴露。三星/OneUI较宽松,恰好放行了,属于"碰巧能用"。其他品牌(华为EMUI、OPPO ColorOS等)也可能存在同样的问题。

✅ App Inventor 2 中文网已修复此问题

我们已经在平台底层为 TextToSpeech 组件添加了 @UsesQueries(android.intent.action.TTS_SERVICE) 声明,与 SpeechRecognizer、BarcodeScanner 等组件保持一致。

修复细节

🔧 给 TextToSpeech 组件添加类级 @UsesQueries(android.intent.action.TTS_SERVICE)

📦 编译产物 simple_components_build_info.json 已确认正确生成

🏗 编译的APK清单中将包含对应的 <queries> 标签

✅ 各机型(含MIUI)均可一致绑定TTS引擎、正常朗读

这意味着:现在通过 App Inventor 2 中文网(fun123.cn)打包的APK,在小米/MIUI手机上也能正常使用文本朗读了,无需用户做任何额外设置。

为什么原版没修复?

MIT App Inventor 官方源码中,SpeechRecognizer组件早就为 RecognitionService 声明了queries,但TextToSpeech组件却遗漏了TTS_SERVICE的声明。这是一个长期存在的官方遗漏

我们在本土化过程中发现并修复了这个问题,这也是 App Inventor 2 中文网的价值所在——不只是翻译,更是在原版基础上持续改进

总结

维度 说明
问题现象 AI伴侣正常,打包APK在MIUI上TTS无声
根本原因 Android 11+ 包可见性限制,TextToSpeech组件缺少@UsesQueries声明
为什么权限没用 TTS本身不需要权限,是queries声明问题,跟权限无关
为什么AI伴侣正常 伴侣自带queries声明,能直接绑定TTS引擎
我们的修复 ✅ 已从底层组件修复,全机型支持

遇到这个问题的开发者,只需通过 App Inventor 2 中文网 重新打包APK即可,TTS朗读功能在所有机型上都能正常使用。


相关链接
🌐 App Inventor 2 中文网:www.fun123.cn
💬 社区讨论帖:论坛原帖 

https://bbs.tsingfun.com/thread-1509-1-1.html

📋 版本更新日志:查看最新版本

关于我们:App Inventor 2 中文网(fun123.cn)——MIT同步更新的中文本土化平台,不只是翻译,更在原版基础上持续改进,让编程教育更简单!