Android 开发中的遇到的一些细节问题总结

本文总结了Android开发中遇到的几个关键问题,包括权限异常、加载过多库和Native方法未找到的错误。针对这些问题,提供了解决方案,如设置`android:sharedUserId=“android.uid.system"`解决权限问题,优化动态加载库的数量,以及检查JNI方法名和C++文件的正确性。此外,还分享了作者的Android开发经验,包括在大厂的工作经历和学习资源推荐。
摘要由CSDN通过智能技术生成

关键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

  • 23
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值