【Appium踩坑】Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES: Failed to collect certificates

解决方法

1、手机设置开启未知来源
2、 设备重连成功后,再跑脚本试一下

adb kill-server
adb devices
详细报错信息
 Stderr: 'Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES: 
 Failed to collect certificates from /data/app/vmdl2032509516.tmp/base.apk: 
 META-INF/CERT.SF has invalid digest for javax/annotation/meta/Exclusive.java 
 in /data/app/vmdl2032509516.tmp/base.apk]'; 
 Code: '1'
<think>好的,用户遇到了在卸载Appium设置应用时出现错误:“Failure [INSTALL_FAILED_INVALID_APK: Missing existing base package]”。我需要分析这个问题并给出解决方案。 首先,这个错误通常出现在尝试卸载或重新安装一个分拆包(split APK)的应用时。Appium的settings应用可能是一个分拆包,而系统要求必须有基础包存在才能正确处理分拆包。当用户尝试卸载分拆包时,如果没有基础包,就会出现这个错误。 接下来,用户可能的操作步骤是尝试通过ADB命令卸载Appium的settings应用,但遇到了问题。他们可能之前已经卸载了基础包,或者尝试同时卸载所有分拆包,导致系统无法识别正确的包结构。 解决方案需要考虑如何正确处理分拆包的卸载。首先,用户应该确认Appium settings是否是分拆包的一部分。如果是,正确的做法是使用`adb uninstall`命令,并指定正确的包名和分拆包信息。例如,使用`--user 0`参数来指定用户,或者检查是否需要同时卸载基础包和分拆包。 另外,用户可能需要先禁用或卸载基础包,然后再处理分拆包。或者,如果用户只是想更新或重新安装Appium,可能需要先完全卸载所有相关组件,包括基础包和分拆包,然后再重新安装。 还需要提醒用户,某些系统设置应用可能无法通过常规方式卸载,尤其是预装的系统应用。如果Appium settings是系统应用的一部分,用户可能需要使用更高级的方法,如root权限,或者通过设备管理器进行卸载。 最后,用户可能需要检查ADB命令的正确性,确保包名正确,并且设备连接正常。如果问题依旧,可能需要查看日志以获取更多详细信息,帮助进一步诊断问题。</think>该错误表明 **Appium Settings 应用是分拆包(Split APK)的一部分**,而你尝试卸载时未正确处理其依赖关系。以下是详细原因和解决方案: --- ### **1. 错误原因分析** - **分拆包机制限制** Android 从 7.0 开始支持分拆包(Split APK),即一个应用可能由多个 APK 文件组成(如 `base.apk` + `config.arm64-v8a.apk`)。 - **`Missing existing base package`** 表示你尝试卸载的是分拆包中的某个子包,但其对应的基础包(`base.apk`)不存在或已被卸载。 - **Appium Settings 的特殊性** Appium 的 Settings 组件通常与主服务(`io.appium.uiautomator2.server`)绑定,卸载时需同时处理主服务包。 --- ### **2. 解决方案** #### **(1)强制卸载完整包(含所有分拆包)** ```bash # 1. 列出所有与 Appium 相关的包(包括分拆包) adb shell pm list packages | grep appium # 2. 强制卸载主服务包及其所有分拆包 adb uninstall -r io.appium.settings adb uninstall -r io.appium.uiautomator2.server adb uninstall -r io.appium.uiautomator2.server.test ``` #### **(2)使用 `pm uninstall` 的 `--user` 参数** ```bash # 1. 卸载当前用户(user 0)下的所有分拆包 adb shell pm uninstall --user 0 io.appium.settings adb shell pm uninstall --user 0 io.appium.uiautomator2.server ``` #### **(3)清除 Appium 缓存和数据** ```bash # 1. 删除 Appium 生成的缓存目录 adb shell rm -rf /data/local/tmp/appium* # 2. 清除残留数据 adb shell pm clear io.appium.settings adb shell pm clear io.appium.uiautomator2.server ``` #### **(4)重新安装 Appium 服务** ```bash # 1. 重新安装 Appium 并允许自动安装分拆包 appium --allow-insecure=adb_shell ``` --- ### **3. 验证卸载状态** ```bash # 1. 检查是否仍有残留包 adb shell pm list packages | grep appium # 2. 检查分拆包是否存在 adb shell pm list packages -f | grep appium ``` --- ### **4. 其他注意事项** - **Root 设备的特殊操作** 如果设备已 Root,可通过删除系统目录强制卸载: ```bash adb root adb remount adb shell rm -rf /system/priv-app/AppiumSettings ``` - **Appium 服务依赖关系** 如果仅需临时禁用 Appium 服务,建议使用 `adb shell pm disable-user` 而非卸载: ```bash adb shell pm disable-user --user 0 io.appium.uiautomator2.server adb shell pm disable-user --user 0 io.appium.settings ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值