栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Android push到/system/app下,导致找不到so包

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android push到/system/app下,导致找不到so包

AndroidRuntime: Process: com.skyworth.android.tr069, PID: 5188
06-23 15:28:53.778  5188  5188 E AndroidRuntime: java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/system/app/SkyTr069/SkyTr069.apk"],nativeLibraryDirectories=[/system/app/SkyTr069/lib/arm, /system/app/SkyTr069/SkyTr069.apk!/lib/armeabi-v7a, /system/lib, /product/lib, /system/lib, /product/lib]]] couldn't find "libsk_tr069_jni.so"
06-23 15:28:53.778  5188  5188 E AndroidRuntime:        at com.skyworthdigital.opentr069.OpenTR069Native.(OpenTR069Native.java:12)
06-23 15:28:53.778  5188  5188 E AndroidRuntime:        at com.skyworthdigital.opentr069.OpenTR069Native.setDataPath(Native Method)
06-23 15:28:53.778  5188  5188 E AndroidRuntime:        at com.skyworth.android.tr069.SkyTr069Service.onStartCommand(SkyTr069Service.java:118)
06-23 15:28:53.917  3687  4998 I ActivityManager: Process com.skyworth.android.tr069 (pid 5188) has died: prcp FGS
06-23 15:28:53.920  3687  4998 W ActivityManager: Scheduling restart of crashed service com.skyworth.android.tr069/.SkyTr069Service in 1000ms
06-23 15:28:54.967  3687  3772 I ActivityManager: Start proc 5357:com.skyworth.android.tr069/u0a24 for service {com.skyworth.android.tr069/com.skyworth.android.tr069.SkyTr069Service}
06-23 15:28:55.028  3687  3729 W ActivityManager: Stopping service due to app idle: u0a24 -1s302ms com.skyworth.android.tr069/.SkyTr069Service

 原因

原因是/system/app下面的APK成为系统级app时,包含SO文件,app默认加载so库的路径就会变成/system/lib,而system/lib却是只读的,导致so库无法正常解压不会自动安装,
需要手动把so文件push 到 "/system/lib"目录下面。
   

如果是正常安装到/data/app,/data/data/相应包名目录下会正常出现/lib/*.so文件,可以正常加载运行。但是如果把应用push到/system/app/,/data/data/相应包名目录下没有出现这个库。 system/app下面的应用默认回去加载system/lib下面so库,如果没找到相应的so库就会报UnsatisfiedLinkError 。

经过测试system.loadlibrary加载so库的顺序为:

1、/data/data/相应包名目录下会正常出现/lib/

2、如果1中的目录不存在,则会去加载system/lib下面的so库。


解决方案

将apk中的so文件手动push到"/system/lib" 或使用  adb   install 方式安装

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/993549.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号