一、问题描述
最近接手一个android项目,需要从旧设备安卓一体机(安卓版本7.1.1)移植到新设备(安卓版本10)上,更改SDK后,结果发现无法在新设备上安装,报错
The application could not be installed: INSTALL_PARSE_FAILED_MANIFEST_MALFORMED
网上未能搜到结果,所找的教程只是针对android12的,让在AndroidManifest.xml添加
android:exported = true
在project的gradle.properties文件中添加
android.injected.testOnly=false
然而我的目标设备版本是安卓10,targetSdk为30,按理说不需要做以上配置,事实证明,加上这个配置也没有解决问题。
二、解决办法
查到该报错原因还是因为AndroidManifest.xml配置问题,因此采用了一个笨办法,挨个注释掉配置代码,查看究竟问题出在哪里。然后终于被我试出来了。问题在下面两行。
android:appComponentFactory=""
tools:replace="android:appComponentFactory"
把这两行注释掉即可。
至于一开始原来的开发者加这两行代码有什么用处已经不得而知,猜测是因为一开始使用了Butterknife进行代码开发,后来因为android studio升级,Butterknife无法自动生成代码而变得鸡肋,所以停止使用。把这两行注释掉也不会影响运行效果。恐怕是这样的配置语句已经不兼容新版本的SDK。