Android APK安装后资源文件(res/assets)位置

您所在的位置:网站首页 apk文件如何解压到手机里 Android APK安装后资源文件(res/assets)位置

Android APK安装后资源文件(res/assets)位置

2024-07-03 07:21| 来源: 网络整理| 查看: 265

Android APK安装后资源文件(res/assets)位置 问题背景问题分析Android APK安装后资源文件(res/assets)位置应用安装涉及到的文件夹实际操作 目前在做机顶盒、IPTV相关的开发,入职没多久,说实话,深刻感受到了来自顶级程序员大佬的压迫感呀(瑟瑟发抖ing),也体会到自己需要学习的部分非常多,学无止境,温故知新吧,希望在1年之内能够入大佬的眼,为了这个阶段目标还是需要时常记录问题,积累知识,向着大佬和星辰大海,出发!

问题背景

这并不是一篇记录 APK 安装流程的文章,而是一个实际应用时遇到的问题而学习到的知识。 这个问题是做一个调用公司 framework 中的接口完成动态更新logo的APK。下面是公司文档中暴露出来的接口。 在这里插入图片描述

问题分析

我们可以看到,接口需要的参数为String格式的图片路径,当时想法就像将图片放到APK的drawable文件夹内,成为APK的resource,path路径就写成package/res/drawable/XX.jpg,以此来调用该图片,结果在调用时报错no such file or directory 由此报错,引发了我对标题的疑问。

Android APK安装后资源文件(res/assets)位置 应用安装涉及到的文件夹 /system/app :系统自带的应用程序,获得adb root权限才能删除/data/app :用户程序安装的文件夹。安装时把apk文件复制到此文件夹/data/data :存放应用程序的数据/data/dalvik-cache:将apk中的dex文件安装到dalvik-cache文件夹下(dex文件是dalvik虚拟机的可运行文件,当然,ART–Android Runtime的可运行文件格式为oat。启用ART时,系统会运行dex文件转换至oat文件)/data/system :该文件夹下的packages.xml文件。相似于Windows的注冊表,这个文件是在解析apk时由writeLP()创建的。里面记录了系统的permissions,以及每一个apk的name,codePath,flags,ts,version,uesrid等信息。这些信息主要通apk的AndroidManifest.xml解析获取,解析完apk后将更新信息写入这个文件并保存到flash,下次开机直接从里面读取相关信息加入到内存相关列表中。当有apk升级,安装或删除时会更新这个文件。 实际操作

我们可以看到应用安装的程序应该在/data/app文件夹下,那我们进入看一下: 在这里插入图片描述 可以看到我们安装之后生成的以 package 命名的文件夹,按照我们的剧本,这里面应该按照我们源码的目录结构展示,然后在我们调用接口时,写上这个路径的绝对地址找到图片 在这里插入图片描述 但是,实际上我们进去看: 在这里插入图片描述 一个 apk 文件,lib文件夹;没有按照剧本走呀

这个时候想到,会不会在/data/data目录下呢?进去看一下: 在这里插入图片描述 希望又出现了,我们发现了存放我们APK应用数据的文件夹,进去看看: 在这里插入图片描述 哦吼,希望破灭~ 那难道APK内的资源文件就消失了吗?

当然不会!

还记得/data/app目录下的那个图中的 apk 文件吗: 在这里插入图片描述 事实上,apk安装之后会放在/data/app/**.apk目录下,以apk形式存在,asset/res和被绑定在apk里,并不会解压到/data/data/YourApp目录下去,所以我们无法直接获取到assets/res的绝对路径,因为它们根本就没有。

至此,我们的想法破灭了,但是就没有办法了吗?

并不是,我们可以将图片资源在程序中输出到我们想要的目录内,在写绝对路径即可。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3