开发安卓刮刮卡App时出现Manifest merger failed多错误如何解决
问题根因
报错是AndroidX和旧Android Support库的依赖冲突导致的清单合并失败:你的项目默认使用AndroidX系列依赖,但你引入的第三方刮刮卡库com.github.AnupKumarPanwar:ScratchView:1.3基于旧版Android Support库开发,两类库的核心属性冲突导致构建失败。
可行解决方案
方案1:开启Jetifier自动适配(优先使用)
Jetifier是Android官方提供的依赖转换工具,可以自动将所有第三方库调用的旧Support库替换为AndroidX兼容实现,操作步骤:
- 打开项目根目录下的
gradle.properties文件,添加以下两行配置:
# 开启AndroidX支持 android.useAndroidX=true # 开启Jetifier自动转换第三方库的Support依赖 android.enableJetifier=true
- 同步Gradle后执行
Build > Clean Project再重新构建即可解决90%以上的同类冲突。
方案2:手动修改清单文件覆盖冲突属性
如果开启Jetifier后仍然报错,按报错提示修改AndroidManifest.xml即可:
- 先在manifest根节点添加tools命名空间:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" package="com.luteraa.luteraascratchcard">
- 在application节点添加冲突属性的替换规则:
<application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/Theme.LuteraaScratchCard" tools:replace="android:appComponentFactory" android:appComponentFactory="androidx.core.app.CoreComponentFactory">
修改后同步Gradle重新构建即可。
额外代码优化提醒
你MainActivity里的换行符写反了,将"You have won /n" + number中的/n改为\n才能实现正确的换行效果。
内容的提问来源于stack exchange,提问作者user16457449
相关产品推荐
相关产品推荐

