您的位置:首页 > 移动开发

添加Lib项目报错:Error:Execution failed for task ':app:processDebugManifest'.解决

2017-10-17 22:41 736 查看

添加Lib项目报错:Error:Execution failed for task ‘:app:processDebugManifest’.解决

今天在创建一个项目的时候添加了一个Lib项目和很多依赖,发现程序运行不起来,最后一个一个依赖去掉,发现是依赖的Lib项目问题。

错误情况:

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


或者

Error:Execution failed for task ':app:processDebugManifest'.
> Manifest merger failed : Attribute application@icon value=(@mipmap/ic_launcher) from AndroidManifest.xml:13:9-43
is also present at [BLEConnect:bleLibrary:unspecified] AndroidManifest.xml:17:9-41 value=(@drawable/o2_icon).
Suggestion: add 'tools:replace="android:icon"' to <application> element at AndroidManifest.xml:11:5-29:19 to override.


报错分析:

上面的第一种情况语句翻译下来就是:合并失败的意思,也就是说Lib工程中有和项目的配置冲突的地方。

第二种情况仔细看还是可发现一些提示的:application中的图标和Lib项目中的设置的图标不一致。

原因:

AS的Gradle插件默认会启用Manifest Merger Tool,若Library项目中也定义了与主项目相同的属性(例如默认生成的android:icon和android:theme),则此时会合并失败,并报上面的错误。

解决方法:

方法1:在Manifest.xml的application标签下添加tools:replace=”android:icon, android:theme”(多个属性用,隔开,并且记住在manifest根标签上加入xmlns:tools=”http://schemas.android.com/tools”,否则会找不到namespace哦)

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.example.wenzhi.bleconnect"
>

<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
tools:replace="android:icon"   //这里设置合并的属性
android:theme="@style/AppTheme">


方法2:在build.gradle根标签上加上useOldManifestMerger true (懒人方法)

这个我也没有用过

添加Lib项目时,还有时候也会报这个错误:

app’s minSdk is higher than any library’s minSdk.


要求app’s minSdk >= libraries minSdk

也就是说项目中的最小Sdk设置的数值要大于或等于Lib项目中的

这里的minSdk要是build.gradle的才算,在AndroidManfest中的不起作用!

项目中的配置:



Lib项目中的配置:



这里的Lib的最小版本要求比项目的高,所以程序编译会报错



Error:Execution failed for task ':app:processDebugManifest'.
> Manifest merger failed : uses-sdk:minSdkVersion 15 cannot be smaller than version 17 declared in library [BLEConnect:bleLibrary:unspecified]
> D:\androidStudioWorkPlace\BLEConnect\app\build\intermediates\exploded-aar\BLEConnect\bleLibrary\unspecified\AndroidManifest.xml
Suggestion: use tools:overrideLibrary="com.xtremeprog.sdk.ble" to force usage


上面的语句就是说项目中的最小版本SDK号15小于Lib项目中的17,这里只要把项目中的最小SDK改成17或者以上就可以了。

导入Lib项目或添加各种依赖的时候,不要一下子添加很多,要一两个添加,同步一下,看看报错了没有,再添加或做下一步,否则排查起来是很麻烦的。

共勉:做最优秀的自己:不断学习,天天向上

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐