最近在MTK6757 9.0 上实现APK预置时发现,当APK中使用so时预置后无法正常使用.错误信息

04-09 13:33:42.933  3373  3373 E AndroidRuntime: java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/system/framework/org.apache.http.legacy.boot.jar", zip file "/vendor/operator/app/xxx/xxx.apk"],nativeLibraryDirectories=[/data/app-lib/xxx, /system/fake-libs, /vendor/operator/app/xxx/xxx.apk!/lib/armeabi-v7a, /system/lib]]] couldn't find "lixxx.so"
04-09 13:33:42.933  3373  3373 E AndroidRuntime:        at java.lang.Runtime.loadLibrary0(Runtime.java:1013)
04-09 13:33:42.933  3373  3373 E AndroidRuntime:        at java.lang.System.loadLibrary(System.java:1669)

经过以下尝试最终解决问题::

1. 尝试将so文件在编译之前拷贝到out下 指定目录/data/app-lib/xxx.编译完成后发现 错误信息一样,问题无法解决.

2. 发现1无法实现后,开始分析PackageManagerService.java系统服务 apk安装相关代码.

public PackageManagerService(Context context, Installer installer,
            boolean factoryTest, boolean onlyCore) {

发现系统在启动过程中会逐个扫描系统主要目录并尝试安装目录下apk文件scanDirTracedLI.

这时发现没有找到指定目录vendor/operator/app 的扫描,于是尝试添加对次目录扫描

scanDirTracedLI(new File(VENDOR_OPERATOR_DIR),
                    mDefParseFlags
                    | PackageParser.PARSE_IS_SYSTEM_DIR,
                    scanFlags
                    | SCAN_AS_SYSTEM,
                    0)

编译后刷机发现问题依然没办法解决.在分析系统开机log 后发现问题应该出在其他地方

shirts.xxx: type=1400 audit(0.0:998): avc: denied { open } for path="/data/app-lib/xxx/libxxx.so" dev="dm-2" ino=196611 scontext=u:r:untrusted_app_25:s0:c512,c768 tcontext=u:object_r:system_data_file:s0 tclass=file permissive=0

shirts.xxx: type=1400 audit(0.0:999): avc: denied { read } for name="libxxx.so" dev="dm-1" ino=1344 scontext=u:r:untrusted_app_25:s0:c512,c768 tcontext=u:object_r:vendor_file:s0 tclass=file permissive=0

3.  在查找了avc: denied { open } 相关的文章后发现问题出在selinux 权限问题上,问题找到方向就好解决.于是开始查找相关selinux权限修改资料学写并尝试修改te文件.

avc: denied { open }--------------------------------------------------缺少什么权限

scontext=u:r:untrusted_app_25:s0:c512,c768 ----------------谁缺少权限
tcontext=u:object_r:system_data_file:s0 ------------------------那个文件缺少权限
tclass=file ----------------------------------------------------------------什么类型的文件
permissive=0

完整意思: untrusted_app_25进程对system_data_file类型的file缺少open权限

avc: denied { read }----------------------------------------------------缺少什么权限

scontext=u:r:untrusted_app_25:s0:c512,c768 
tcontext=u:object_r:vendor_file:s0 
tclass=file 
permissive=0

完整意思: untrusted_app_25进程对vendor_file类型的file缺少read权限

于是找到相应的te文件进行修改. 由于是9.0 项目所以直接在system\sepolicy\prebuilts\api\28.0\private 下找到相应的untrusted_app_25.te文件进行修改.由于必须和system\sepolicy\private\untrusted_app_25.te 文件保持一致,所以做相同修改.

allow untrusted_app_25 system_data_file:file { open };
allow untrusted_app_25 vendor_file:file { read };

兴高采烈的以为己决问题,编译完后发现还是报错,仔细分析后发现修改是有作用的,只是权限还没有赋完整

04-09 13:33:42.923  3373  3373 W shirts.xxx: type=1400 audit(0.0:998): avc: denied { execute} for path="/data/app-lib/xxx/libxxx.so" dev="dm-2" ino=196611 scontext=u:r:untrusted_app_25:s0:c512,c768 tcontext=u:object_r:system_data_file:s0 tclass=file permissive=0

于是在添加对"execute" 权限的增加.

allow untrusted_app_25 system_data_file:file { open execute};

allow untrusted_app_25 vendor_file:file { read };

最终问题解决

MTK6757 9.0 APK预置vendor/operator/app 无法正常工作相关推荐

  1. 如何让APP不在设置中的应用列表中显示(MTK6757 Android9.0 )

    如何让APP不在设置中的应用列表中显示(MTK6757 Android9.0 ) 自己开发了一个APP,不想让APP在设置中的应用列表张显示APP图标,该如何操作呢? \vendor\mediatek ...

  2. android 8.1 9.0 10.0 默认允许安装第三方app去掉未知来源弹窗直接安装apk

    1.概述 在10.0的产品开发中,8.0以后对于安装第三方app时需要申请 REQUEST_INSTALL_PACKAGES权限,那么没有申请权限时就会弹出 安装未知来源的对话框,而在定制化开发中,有 ...

  3. 基于TensorFlow2.3.0的花卉识别Android APP设计

    一.前言 本设计为基于TensorFlow2.3.0的花卉识别Android APP.TensorFlow2.3.0的API简单易用,训练好后模型导出tflite格式供Anroid APP使用. 开发 ...

  4. 从0到1搞出个人app实现长久盈利

    我们都知道,开发一个app很大程度依赖服务端:服务端提供接口数据,然后我们展示:另外,开发一个app,还需要美工协助切图.没了接口,没了美工,app似乎只能做成单机版或工具类app,真的是这样的吗?先 ...

  5. Android 11.0根据包名授予app所需的权限

    在11.0 定制开发中第三方app第一次进入的时候 会弹出授予权限的权限框 有时候觉得挺麻烦的,所以根据客户要求 默认授予权限,这时我们就需要根据包名PackageName 来给与所需要的权限 首选来 ...

  6. 从0到1搭建移动App功能自动化测试平台(2):操作iOS应用的控件

    转载:http://debugtalk.com/post/build-app-automated-test-platform-from-0-to-1-Appium-interrogate-iOS-UI ...

  7. 关于vue2.0+hbuilder打包移动端app之后空白页面的解决方案

    关于vue2.0+hbuilder打包移动端app之后空白页面的解决方案 参考文章: (1)关于vue2.0+hbuilder打包移动端app之后空白页面的解决方案 (2)https://www.cn ...

  8. 基于vue2.0的一个豆瓣电影App

    1.搭建项目框架 使用vue-cli 没安装的需要先安装 npm intall -g vue-cli 使用vue-cli生成项目框架 vue init webpack-simple vue-movie ...

  9. 最新ONE兔V3.0版/婚恋/交友/社交APP三端源码

    正文: 最新ONE兔v3.0版/婚恋/交友/社交APP/原生手机客户端源码,原生手端,非uniapp,搭建难度不低.纯源码,全开源,需编译后方可使用,有喜欢这一类的可以拿去研究了. 本系统包括:网站p ...

最新文章

  1. 判断某数组是不是二叉树的前序遍历序列 python递归
  2. 驰骋工作流携手山东金义,实施落地上海光大银行
  3. Windows应用程序类型和相应的入口点函数
  4. c++中的pod类型
  5. Android九点阵手势识别,能量黑科技模块八-九:两路按键颜色手势魔块
  6. C++ —— C++内联函数
  7. MySql常用语句总结更新
  8. 连续投影算法_腾讯优图 | 3D结构光摄像头深度算法综述
  9. Protel99SE应用技术问答(经典)
  10. 能上QQ但是打不开网页
  11. 实战攻防比赛中作为防守方需要做哪些工作
  12. win7系统怎么进行网络重置?
  13. python requests爬网页加速
  14. python opencv Shi-Tomasi 角点检测和特征跟踪
  15. 计算机软考最佳时间,软考报名时间是什么时候?软考有哪些意义?
  16. python网络爬虫网易云音乐下载_python网络爬虫爬取网易云音乐
  17. R语言笔记一:R软件的下载、界面简介、帮助文档
  18. JS 和 vue 时间倒计时(天、时、分、秒)
  19. C++:to_string与stoi函数
  20. Revit中交叉剪刀一样的楼梯怎么画的?门窗生成操作

热门文章

  1. SpringBoot:Invalid character found in method name. HTTP method names must be tokens
  2. Axure之支付宝官方控件库
  3. Bundle的使用方法
  4. 《哈佛大学公开课:幸福课》学习笔记(2)
  5. moment判断日期是今天,昨天
  6. 网络层定义与协议分析
  7. 聊聊OpenStack运维架构
  8. 肖 sir_就业课__014python讲解
  9. 大学计算机二级access数据库,2013年计算机二级access数据库窗体使用
  10. 利用人性弱点的互联网产品(一)贪婪