apk内部存储路径

首先内部存储路径为/data/data/youPackageName/,下面讲解的各路径都是基于你自己的应用的内部存储路径下。所有内部存储中保存的文件在用户卸载应用的时候会被删除。

一、 files

  1. Context.getFilesDir(),该方法返回/data/data/youPackageName/files的File对象。
  2. Context.openFileInput()与Context.openFileOutput(),只能读取和写入files下的文件,返回的是FileInputStream和FileOutputStream对象。www.2cto.com
  3. Context.fileList(),返回files下所有的文件名,返回的是String[]对象。
  4. Context.deleteFile(String),删除files下指定名称的文件。

二、cache

  1. Context.getCacheDir(),该方法返回/data/data/youPackageName/cache的File对象。

三、custom dir
getDir(String name, int mode),返回/data/data/youPackageName/下的指定名称的文件夹File对象,如果该文件夹不存在则用指定名称创建一个新的文件夹。

一些路径的标准写法
Environment.getDataDirectory() = /data
Environment.getDownloadCacheDirectory() = /cache
Environment.getExternalStorageDirectory() = /mnt/sdcard
Environment.getRootDirectory() = /system
context.getCacheDir() = /data/data/com.mt.mtpp/cache
context.getExternalCacheDir() = /mnt/sdcard/Android/data/com.mt.mtpp/cache
context.getFilesDir() = /data/data/com.mt.mtpp/files

使用adb查看apk内存储数据:【手机有root权限】

adb shell
su -
cd data/data/airfight.dawx.com/
ls
下面包含了四个文件见 files cache lib database

使用adb获取数据:
adb push D:\file.txt system/
adb pull system/file.txt D:/


apk的安装卸载流程:
应用安装涉及到如下几个目录:
system/app
系统自带的应用程序,无法删除

data/app
用户程序安装的目录,有删除权限。
安装时把apk文件复制到此目录

data/data
存放应用程序的数据

Data/dalvik-cache
将apk中的dex文件安装到dalvik-cache目录下(dex文件是dalvik虚拟机的可执行文件,其大小约为原始apk文件大小的四分之一)

安装过程:复制APK安装包到data/app目录下,解压并扫描安装包,把dex文件(Dalvik字节码)保存到dalvik-cache目录,并data/data目录下创建对应的应用数据目录。
卸载过程:删除安装过程中在上述三个目录下创建的文件及目录

APK 热更新后,每次生成的内部文件存储路径名称是通过插件或框架实现的,具体的生成方式可能因插件或框架而异。以下是一些可能的生成方式: 1. 时间戳或版本号 有些热更新插件或框架会使用时间戳或版本号来生成不同的内部文件存储路径名称。例如,每次进行热更新时,将新版本的时间戳或版本号作为文件夹名称,然后将更新的文件存储在该文件夹中。 2. 随机字符串 另一种生成不同内部文件存储路径名称的方式是使用随机字符串。每次进行热更新时,生成一个随机字符串作为文件夹名称,然后将更新的文件存储在该文件夹中。这种方式可以避免生成的文件夹名称过于规律,增加破解难度。 无论采用何种方式生成内部文件存储路径名称,获取该名称的方法都是相似的。可以使用如下代码获取文件夹名称: ```java File filesDir = getFilesDir(); File hotCodePushDir = new File(filesDir, "cordova-hot-code-push-plugin"); File[] subDirs = hotCodePushDir.listFiles(); String latestDirName = subDirs[subDirs.length - 1].getName(); ``` 以上代码假设使用了 cordova-hot-code-push-plugin 进行热更新,它会在应用程序内部存储中创建一个名为 cordova-hot-code-push-plugin 的文件夹。然后我们可以通过列出该文件夹下的所有子目录,获取最新的文件夹名称。请注意,这里假设最新的文件夹名称是最后一个子目录的名称,实际中可能需要根据不同的插件或框架进行调整。 对于内部路径名称的拼接方式,它也是插件或框架实现的。一般来说,它的拼接方式是通过将插件或框架的名称作为文件夹名称,然后在该文件夹下再创建一个以时间戳或版本号或随机字符串为名称的文件夹,最后将更新的文件存储在该文件夹中。这样每次进行热更新时,都会生成一个新的文件夹,避免重复覆盖旧的文件。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值