记一次LeakCanary导致的INSTALL_PARSE_FAILED_MANIFEST_MALFORMED安装失败

260 阅读1分钟

错误信息

image.png

环境配置

  • Android Studio Iguana | 2023.2.1 Patch 1
  • targetSdk 33
  • LeakCanary 2.5

问题表现

  • 可以打包,但是安装过程中提示安装失败(APP前几个版本是没有问题的)
  • Android Studio报错如上图,但是没有更多信息

排查思路

  1. Google搜索INSTALL_PARSE_FAILED_MANIFEST_MALFORMED关键字,发现大部分都说是AndroidManifest.xml文件内写法有误,但是经过排除法验证,与AndroidManifest.xml文件无关
  2. 回顾修改记录,上次安装成功以后,增加过一些依赖(LeakCanary就是这时加上的),也修改了manifest文件(已排除),大概率出在gradle的依赖关系上
  3. 逐一注释,发现是LeakCanary导致的安装失败

解决方法

  • 升级LeakCanary至最新的 2.13
  • 重新sync后安装成功

原因分析

  • Android 12 (targetSDK 31)要求对于在AndroidManifest.xml中声明了标签的组件,要显式指定其android:exported属性,见链接
  • LeakCanary在2.10的版本修复了这个问题

经验

  • 发生问题时,如果Google不到正确的答案,就不要浪费更多时间在它上面
  • 回溯上一次打包失败以后进行了哪些改动,逐一排除
  • 如果记不清,就从头新建一个项目,再一一对照当前的问题项目
  • 对于安装失败的问题,如果AS没有输出有效信息,就用控制台进行adb install,这里会有更多信息输出,如下图:

image.png