Android 手机卸载 App 但保留应用数据 作者: Shine 时间: 2025-04-20 分类: Android 评论 比如微信,我是通过国内应用商店安装的,我现在想要安装 Play store 版本的,按照往常可能就需要卸载再安装。 但是我从一些论坛得知其实可以使用 `adb uninstall -k` 命令来卸载 App 但是保留应用数据和缓存。 比如你要卸载微信但是保留应用数据和缓存你就可以这样操作: ```shell adb uninstall -k com.tencent.mm # 如果执行上述命令提示如下内容: # The -k option uninstalls the application while retaining the data/cache. #At the moment, there is no way to remove the remaining data. # You will have to reinstall the application with the same signature, and fully uninstall it. # If you truly wish to continue, execute 'adb shell cmd package uninstall -k'. # 你就执行这个命令: adb shell cmd package uninstall -k com.tencent.mm ```  --- **下面的内容通过 LLM 生成** # 使用 `adb uninstall -k` 命令卸载 Android 应用并保留数据 `adb uninstall -k` 是 Android Debug Bridge(ADB)提供的一个命令选项,允许你在卸载应用时保留其本地数据和缓存。本文将详细介绍该命令的作用、适用场景、注意事项及常见问题处理方式。 --- ## 📌 命令格式 ```bash adb uninstall -k <包名> ``` - `-k`:表示在卸载 APK 时 **保留应用的用户数据和缓存目录**,如: - `/data/data/<包名>` - `/sdcard/Android/data/<包名>` --- ## ✅ 使用示例 以微信(WeChat)为例,其包名为 `com.tencent.mm`,执行以下命令可卸载微信 APK 但保留用户数据: ```bash adb uninstall -k com.tencent.mm ``` 卸载后,再次安装相同包名和签名的应用时,原有数据将会被保留和恢复。 --- ## 🧠 应用场景 - 在调试或测试应用时,希望**保留登录信息、配置文件或缓存数据**; - 想通过重新安装 App 来修复某些问题,但又不想让用户数据丢失; - 在自动化测试或 CI/CD 脚本中清除 APK,但保留状态。 --- ## ⚠️ 注意事项 ### 1. 无法删除保留的数据 当使用 `-k` 参数时,系统保留了 `/data/data/<包名>` 等目录。如果你之后无法重新安装具有**相同签名**的应用,可能会导致这些数据**变成系统残留垃圾**,也**无法通过 ADB 再次删除**。 ### 2. 签名不一致将无法复用数据 你需要使用**相同签名的 APK**重新安装,才能正常访问旧数据。不同签名的版本(如 debug 签名与 release 签名)无法读取原有数据。 ### 3. 系统提示信息 执行 `adb uninstall -k` 后,可能会看到如下提示: ``` The -k option uninstalls the application while retaining the data/cache. At the moment, there is no way to remove the remaining data. You will have to reinstall the application with the same signature, and fully uninstall it. If you truly wish to continue, execute 'adb shell cmd package uninstall -k'. ``` > 这是在提醒你:一旦卸载后签名不同,保留的数据将无法删除或复用。 --- ## 🛠️ 替代命令(推荐) 官方推荐使用更底层的 `cmd package` 命令来保留数据: ```bash adb shell cmd package uninstall -k <包名> ``` 示例: ```bash adb shell cmd package uninstall -k com.tencent.mm ``` 该命令作用与 `adb uninstall -k` 相同,但更加直接调用了系统的 `PackageManagerService`。 --- ## 🧹 完全清除数据的卸载方式 如果你想彻底卸载应用及其所有数据: ```bash adb uninstall <包名> ``` 示例: ```bash adb uninstall com.tencent.mm ``` 此操作将删除 APK 文件以及所有相关数据。 --- ## 📂 检查残留数据 可通过以下命令检查某个应用是否还有保留数据: ```bash adb shell ls /data/data/<包名> adb shell ls /sdcard/Android/data/<包名> ``` --- ## 📝 总结 | 目标 | 命令 | |---------------------------|-----------------------------------------------------------| | 卸载 APK 并保留数据 | `adb uninstall -k <包名>` 或 `adb shell cmd package uninstall -k <包名>` | | 卸载 APK 并清除所有数据 | `adb uninstall <包名>` | | 检查是否有数据残留 | `adb shell ls /data/data/<包名>` | --- ## 🙋 常见问题解答 ### Q: 使用 `-k` 卸载后,无法再次安装应用,提示签名冲突? A: 请确保你使用的 APK 与原版本签名一致,或者先使用 `adb uninstall <包名>` 清除数据后再安装。 ### Q: 使用 `-k` 卸载后,怎么彻底删除保留的数据? A: 只能重新安装相同签名的 APK 后,使用 `adb uninstall` 来完整卸载清除所有数据。
Android EditText 按下一步按钮跳到置顶 EditText 作者: Shine 时间: 2020-11-13 分类: Android 评论 ```xml ``` # 重点就是 ```java android:imeOptions="actionNext" android:nextFocusForward="@id/ip2" ```
Android Spinner 动态增加 item,以及添加 Spinner 监听选择/选中项事件 作者: Shine 时间: 2020-10-28 分类: Android 评论 ``` @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.confrim_activity); //获取控件 Spinner startPlace = (Spinner) findViewById(R.id.start_place); List stringList = new ArrayList<>(); stringList.add("项目1"); stringList.add("项目2"); stringList.add("项目3"); //使用系统的默认样式 android.R.layout.simple_spinner_item ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_spinner_item, stringList); //使用系统默认下拉样式 android.R.layout.simple_spinner_dropdown_item adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); startPlace.setAdapter(adapter); //监听选择事件 startPlace.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView> parent, View view, int position, long id) { //TODO 选中事件 //position:选中的哪个 stringList.get(position) } @Override public void onNothingSelected(AdapterView> parent) { } }); } ``` ![QQ20201028-105957@2x.png][1] [1]: https://cdn.nowtime.cc/2020/10/28/1239940170.png
Java List 与 JSON 相互转换 作者: Shine 时间: 2020-10-26 分类: Android,Java 评论 # 使用谷歌 `Gson`: ``` //list转换为json Gson gson = new Gson(); List persons = new ArrayList(); String str = gson.toJson(persons); ``` ``` //json转换为list Gson gson = new Gson(); List persons = gson.fromJson(str, new TypeToken>(){}.getType()); ```
记一次 Android Studio 里面的代码全部错乱 作者: Shine 时间: 2020-10-24 分类: Android 评论 # 初次怀疑可能是自己在 macOS 下打开过次项目导致错乱 在 Android Studio 下和自己用 Notpad++ 打开显示的代码不一样,NotePad++显示才是正确的 ![在 Android Studio 下和自己用 Notpad++ 打开显示的代码不一样,NotePad++显示才是正确的][1] ### 尝试过解决 `Reload All from Disk`,依旧无用 # 解决办法(自测有效) 关闭 `Android Studio`,删掉 `caches` 文件夹,再次打开 > ## 请注意我是 Android Studio 4.0.2 版本 > 以下的版本可能有些差别,反正在 Android Studio 相关路径下,看到 `cache` 字样的文件夹,删除就完事了 我自己的路径在: - `C:\Users\chuwen\.android\cache` - `C:\Users\chuwen\.AndroidStudio4.0\system\cache` 具体的要自己看看了 ![Snipaste_2020-10-24_19-17-42.jpg][2] --- 参考方案:https://www.jianshu.com/p/4d722b1a1ac0 Google 搜索关键字:**android studio代码错乱** [1]: https://cdn.nowtime.cc/2020/10/24/2743633440.jpg [2]: https://cdn.nowtime.cc/2020/10/24/3108732984.jpg