• 已删除用户
Administrator
发布于 2017-06-30 / 32 阅读
1

解决Manifest merger failed with multiple errors, see logs问题

发现这个问题是我在用安全工具测试apk漏洞时发现以下安全风险:

【低危】Manifest不安全属性配置风险
详细内容:

以下结点设置可被外部调用导致敏感信息泄露.
android:allowBackup="true"
 

修复建议:

allowBackup和debuggable属性设置存在敏感信息泄露,建议android:debuggable和android:allowBackup设置为false

于是就赶紧去改成了
android:allowBackup="false"



编译后发现在错误如下:

Error:Execution failed for task ':app:processDebugManifest'.
> Manifest merger failed with multiple errors, see logs

最无语的是没有其它任何有用的东西

解决方法如下:

按快捷键alt+F12打开Termial窗口,输入

gradlew processDebugManifest --stacktrace

首次执行会下载很多东西,下载完成后会看到更多错误日志如下:

E:\AndroidStudioProjects\byd_c\app\src\main\AndroidManifest.xml:29:5-66 Warning:
       Element uses-permission#android.permission.INTERNET at AndroidManifest.xml:29:5-66 duplicated with element declared at AndroidManifest.xml:5:5-66
E:\AndroidStudioProjects\byd_c\app\src\main\AndroidManifest.xml:224:9-226:39 Warning:
  Element uses-library#org.simalliance.openmobileapi at AndroidManifest.xml:224:9-226:39 duplicated with element declared at AndroidManifest.xml:177:9-179:39
E:\AndroidStudioProjects\byd_c\app\src\main\AndroidManifest.xml:51:9-36 Error:
 Attribute application@allowBackup value=(false) from AndroidManifest.xml:51:9-36
       is also present at [com.othershe:BaseAdapter:1.1.3] AndroidManifest.xml:12:9-35 value=(true).
  Suggestion: add 'tools:replace="android:allowBackup"' to  element at AndroidManifest.xml:49:5-341:19 to override.

这下可以看出来是什么原因了,解决办法也给我们说了

首先加上命名空间

xmlns:tools="http://schemas.android.com/tools"

再加上下面一行

tools:replace="android:allowBackup"

就可以解决了。

如果上面方法不能解决,那可能是下面的问题:

错误1:

由于Library与主项目配置了相同属性引起了冲突,icon,theme,label等.

解决方法:

错误2:

由于Library清单文件中minSdkVersion的版本与主项目不同而引起此错误,只需更改为相同的版本即可

解决方法:

  • 在manifest文件里面添加<uses-sdk tools:overrideLibrary="类库包名"/> ,如果有多个库,只需要用,(逗号)分隔包名即可。