Android中的清除数据和清除缓存有什么区别,它们分别清除了哪些文件

清除数据和清除缓存的区别

反射调用系统隐藏接口,需要准备的东西:

一、在AndroidManifest.xml中的manifest标签下添加声明

android:sharedUserId="android.uid.system"

二、添加如下权限

 <uses-permission android:name="android.permission.DELETE_CACHE_FILES"/>
 <uses-permission android:name="android.permission.ACCESS_INSTANT_APPS"/>
 <uses-permission android:name="android.permission.CLEAR_APP_USER_DATA"/>
 <uses-permission android:name="android.permission.CLEAR_APP_CACHE" />

三、使用系统签名给app进行签名

找到platform.pk8和platform.x509.pem和apksigner.jar三个文件,网上搜索制作系统签名文件的命令

最终生成plateform.keystore签名文件(附上某网盘制作好的系统签名,链接: https://pan.baidu.com/s/11dir8rTC_GxSGuG5El0nMg 提取码: ed33 )

四、创建 android.content.pm.IPackageDataObserver的aidl接口

// IPackageDataObserver.aidl
package android.content.pm;

interface IPackageDataObserver {
void onRemoveCompleted(in String packageName, boolean succeeded);
}

五、实现aidl接口回调监听

经过验证总结,得出如下结论:

1、清除缓存

反射调用接口:PackageManager.deleteApplicationCacheFiles

它会清除以下项目:

A)清除data/data/{package_name}/cache/下的所有文件

B)清除data/data/{package_name}/code_cache/下的所有文件

C)清除mnt/sdcard/Android/data/{package_name}/下的cache文件夹

2、清除数据:

反射调用接口:ActivityManager.clearApplicationUserData

它会清除以下项目:

A)清除data/data/{package_name}/下的所有文件和文件夹(包括lib文件夹,PS:网上有人说lib文件夹和里面的内容不会被清除,经过验证,实际上也会清除)

B)清除mnt/sdcard/Android/data/下当前包名的文件夹

C)清除mnt/sdcard/Android/media/下当前包名的文件夹

D)清除{package_name}对应的app所有运行时权限的授权

E)清除所有通知,和该应用相关的所有URI授权(此项目为接口描述内容,未实际验证)

#但不会清除mnt/sdcard/Android/obb/{package_name}/下的内容

3、清除所有:

反射调用接口:PackageManager.freeStorageAndNotify

回调清除失败,不能清除任何数据。

附:

/mnt/sdcard/ = /storage/emulated/0/

/data/data/ = /data/user/0/

接口返回的目录具体地址:

getCacheDir=/data/user/0/{package_name}/cache

getFilesDir=/data/user/0/{package_name}/files

getDataDir=/data/user/0/{package_name}

getCodeCacheDir=/data/user/0/{package_name}/code_cache

getDir(“abcd”)=/data/user/0/{package_name}/app_abcd

getObbDir=/storage/emulated/0/Android/obb/{package_name}

getExternalCacheDir=/storage/emulated/0/Android/data/{package_name}/cache

getExternalFilesDir(“acbd”)=/storage/emulated/0/Android/data/{package_name}/files/abcd

getExternalMediaDirs[0]=/storage/emulated/0/Android/media/{package_name}

 

### 回答1: 可以通过以下步骤清除 Android Studio 的数据缓存: 1. 打开 Android Studio 2. 点击 "File" 菜单 3. 选择 "Invalidate Caches / Restart" 4. 在弹出的对话框选择 "Invalidate and Restart" 这将删除 Android Studio 的缓存数据并重新启动应用程序,以确保所有缓存数据都被清除。 ### 回答2: 要清除Android Studio的数据缓存,可以按照以下步骤操作: 1. 首先,关闭Android Studio以确保没有正在使用的进程。 2. 在Windows上,打开文件资源管理器,转到用户目录下的\.AndroidStudio目录。在macOS上,打开Finder,然后按下Command + Shift + G,输入~/Library/,然后找到Caches和Preferences文件夹。 3. 进入\.AndroidStudio目录后,删除所有以“cache”开头的文件夹。这将清除Android Studio的缓存数据。 4. 进入前面提到的Preferences文件夹后,删除所有以“AndroidStudio”或“idea”开头的文件夹和文件。这将清除Android Studio的配置数据。 5. 如果需要清除项目的缓存和构建输出,可以在项目目录找到.gradle文件夹,并将其删除。 6. 在Windows上,还可以运行Android Studio的清除命令。按下Win + R,输入cmd并回车,然后进入Android Studio的安装目录下的bin文件夹。在命令提示符,输入studio64.exe clear-cache并回车。这将清除Android Studio的缓存。 7. 最后,重新启动Android Studio。它将使用新的配置和缓存数据来启动。 请注意,在进行这些操作之前,请确保备份项目以防止数据丢失。此外,如果您只是希望清除项目的构建缓存,您也可以在Android Studio选择“Build”菜单,然后选择“Clean Project”或“Rebuild Project”。这将清除项目的构建输出并重新构建它们。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值