Android踩坑:安装带so库的apk后导致系统运行异常,提示其他apk stopped

项目上遇到了带so库的apk在安装在盒子上之后,盒子起机经常出现系统运行异常的现象,弹出许多个弹框提示xxx has stopped,如下图:
这里写图片描述
这里写图片描述
几经排查,确定是apk的so库与系统里面其他apk所使用的so库位数不一致导致的,apk里面使用的全部为32位的so,然而其他很多apk是使用64位的so。后面问了下开发apk的工程师有没有在AndroidManiFest.xml里面添加android:sharedUserId=”android.uid.system”属性,答曰:有。我真是呵呵哒。。。兄dei,apk有so库的前提下,这个属性不能乱加啊,又不是必须加。这里写图片描述
原来apk是拥有系统级权限的,难怪会把其他带跑偏。对于系统权限级别的应用,系统在加载so的时候貌似会遵循这样一个原则:如果首个应用加载的是32位/64位的so,那么就默认会以32位/64位so为基准去加载其他的系统级别应用的so,于是乎就造成了系统加载so错乱。但是非系统权限级别的apk的so则不会存在此问题,不论是32还是64都不会影响到其他系统权限级别的so的加载。

解决办法:
去掉AndroidManiFest.xml里面的android:sharedUserId=”android.uid.system”之后,重新运行,验证ok。

总体而言,关于so库问题以下2点需要注意:
1.so库位数
2.apk的权限级别,清单文件里面是否有android:sharedUserId=”android.uid.system”属性

猜你喜欢

转载自blog.csdn.net/u010725171/article/details/81352768