关键Log:
AndroidRuntime: java.lang.RuntimeException: Unable to start receiver com.svox.pico.LangPackUninstaller: java.lang.SecurityException: Neither user 10060 nor current process has android.permission.DELETE_PACKAGES.
原因是首次开机时,Pico TTS会根据时区删除一些语言包,然而没有DELETE_PACKAGES权限,抛出SecurityException安全异常。虽然已经声明DELETE_PACKAGES了权限,但是没有system的sharedUserId,添加就可以了:
android:sharedUserId=“android.uid.system”
这样编译的时候,系统会使用platform.x509.pem和platform.pk8对生成的APK进行签名。
4.too many libraries when loading *.so
加载过多库遇到问题。以下是MTK的回复:
android 使用linker 来加载相关的lib 库。linker 对可加载的lib 库数量进行了限
制,在alps/bionic/linker.cpp 中定义了常量SO_MAX,目前MTK 默认是160, 即在一
个Process 中最多动态加载160个lib 库,超过即会提示too many libraries when
loading *.so , 常见的process 如mediaserver, system_server 等多服务集中的
process.
如果发现此类case, 首先要确认到底有加载哪些lib 库。可以adb shell cat
proc/{PID}/maps