添加依赖项com.google.android.material后,Android清单合并失败 [英] Android Manifest Merger fails after adding Dependency com.google.android.material

查看:122
本文介绍了添加依赖项com.google.android.material后,Android清单合并失败的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我们想使用Google提供的最新材料设计ui元素.因此,我在项目gradle文件中添加了com.google.android.material:material:1.0.0-beta01.但是从那时起,我得到了以下错误.

We would like to use the most current material design ui elements presented by Google. Therefore I added com.google.android.material:material:1.0.0-beta01 in our projects gradle file. But since then I get the following error.

清单合并失败:来自[androidx.core:core:1.0.0-beta01] AndroidManifest.xml:22:18-86的属性application @ appComponentFactory value =(androidx.core.app.CoreComponentFactory) 也出现在[com.android.support:support-compat:28.0.0-beta01] AndroidManifest.xml:22:18-91 value =(android.support.v4.app.CoreComponentFactory). 建议:在AndroidManifest.xml:5:5-40:19的元素上添加'tools:replace ="android:appComponentFactory"'以进行覆盖.

Manifest merger failed : Attribute application@appComponentFactory value=(androidx.core.app.CoreComponentFactory) from [androidx.core:core:1.0.0-beta01] AndroidManifest.xml:22:18-86 is also present at [com.android.support:support-compat:28.0.0-beta01] AndroidManifest.xml:22:18-91 value=(android.support.v4.app.CoreComponentFactory). Suggestion: add 'tools:replace="android:appComponentFactory"' to element at AndroidManifest.xml:5:5-40:19 to override.

没有材料库,一切正常.

Without the material library everything works fine.

我已经尝试过的东西

  1. 我更改了依存关系的顺序(显然不起作用)
  2. 我还尝试按照错误消息中的建议将tools:replace="android:appComponentFactory"添加到清单文件中.但这给我留下了一条新的错误消息:
  1. I changed the ordering of the dependencies (which did obviously not work)
  2. I also tried to add tools:replace="android:appComponentFactory" to our Manifest file as suggested in the error message. But this left me with a new error message:

java.lang.RuntimeException:清单合并失败,并出现多个错误,请参阅日志 在com.android.builder.core.AndroidBuilder.mergeManifestsForApplication(AndroidBuilder.java:524) 在com.android.build.gradle.tasks.ProcessManifest.doFullTask​​Action(ProcessManifest.java:75) 在com.android.build.gradle.internal.tasks.IncrementalTask​​.taskAction(IncrementalTask​​.java:106)

java.lang.RuntimeException: Manifest merger failed with multiple errors, see logs at com.android.builder.core.AndroidBuilder.mergeManifestsForApplication(AndroidBuilder.java:524) at com.android.build.gradle.tasks.ProcessManifest.doFullTaskAction(ProcessManifest.java:75) at com.android.build.gradle.internal.tasks.IncrementalTask.taskAction(IncrementalTask.java:106)

我检查了日志文件,但是idea.log中显示的唯一警告是

I checked the log file but the only warning shown in idea.log is

2018-08-08 11:08:21,500 [线程267]警告- .tools.idea.model.ManifestInfo-getMergedManifest失败的清单 合并失败并出现多个错误,请参阅日志2018-08-08 11:08:21,642 [线程267]警告-.tools.idea.model.ManifestInfo- getMergedManifest失败Manifest合并失败,并出现多个错误, 查看日志2018-08-08 11:08:21,917 [J pool 0/7]

2018-08-08 11:08:21,500 [thread 267] WARN - .tools.idea.model.ManifestInfo - getMergedManifest failed Manifest merger failed with multiple errors, see logs 2018-08-08 11:08:21,642 [thread 267] WARN - .tools.idea.model.ManifestInfo - getMergedManifest failed Manifest merger failed with multiple errors, see logs 2018-08-08 11:08:21,917 [J pool 0/7]

更多信息

API版本

android {
compileSdkVersion 28
buildToolsVersion '28.0.0'

defaultConfig {
    minSdkVersion 19
    targetSdkVersion 28
    versionCode 1
    versionName "1.0"
}

(在Android Studio中的文件>项目结构中选择了相同的API)

(the same API is chosen in file > project structure in Android Studio)

依赖项:

dependencies {
api fileTree(include: ['*.jar'], dir: 'libs')

/** ANDROID LIBRARIES  **/
implementation 'com.android.support:multidex:1.0.2'
implementation 'com.android.support:appcompat-v7:28.0.0-beta01'
api 'com.android.support:support-v13:28.0.0-beta01'
api 'com.google.android.material:material:1.0.0-beta01'
api 'com.android.support:design:28.0.0-beta01'
api 'com.android.support:preference-v7:28.0.0-beta01'
api 'com.android.support:cardview-v7:28.0.0-beta01'
api 'com.android.support:customtabs:28.0.0-beta01'
api 'com.android.support:support-v4:28.0.0-beta01'

/** GOOGLE PLAY SERVICE  **/
api 'com.google.android.gms:play-services-auth:15.0.1'

api 'com.google.android.gms:play-services-drive:15.0.1'
api 'com.google.android.gms:play-services-fitness:15.0.1'
api 'com.google.android.gms:play-services-maps:15.0.1'
api 'com.google.android.gms:play-services-wearable:15.0.1'
api 'com.google.android.gms:play-services-vision:15.0.2'

api 'com.google.firebase:firebase-core:16.0.1'
api 'com.google.firebase:firebase-perf:16.0.0'
api 'com.crashlytics.sdk.android:crashlytics:2.9.4'

//sunrise and sundown calculation for map day and night mode
api 'com.luckycatlabs:SunriseSunsetCalculator:1.2'

/** GOOGLE MAPS  **/
implementation 'com.google.maps.android:android-maps-utils:0.5'
implementation 'com.google.code.gson:gson:2.8.0'

/** EXTERNAL LIBRARIES  **/

implementation 'org.osmdroid:osmdroid-android:5.6.5'
implementation 'org.osmdroid:osmdroid-mapsforge:5.6.5'
implementation 'org.mapsforge:mapsforge-map-android:0.6.1'
implementation 'org.mapsforge:mapsforge-map:0.6.1'
implementation 'com.caverock:androidsvg:1.2.2-beta-1'

//dropbox api
implementation 'com.dropbox.core:dropbox-core-sdk:3.0.6'    

androidTestImplementation 'junit:junit:4.12'
implementation files('libs/samsung-health-data-v1.3.0.jar')}

清单

<manifest
package="com.user.libraries.bluetooth"
xmlns:tools="http://schemas.android.com/tools"
xmlns:android="http://schemas.android.com/apk/res/android">

<uses-permission android:name="android.permission.NFC" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.BODY_SENSORS" />
<uses-permission android:name="android.permission.VIBRATE"/>    

<application
    tools:replace="android:appComponentFactory"
    android:allowBackup="true"
    android:supportsRtl="true">
    <service android:name="com.user.libraries.location.LocationService" />
    <service android:name="com.user.libraries.location.BleLocationTrackerService" />
    <service android:name="com.user.libraries.sensors.SensorService"/>

    <service android:name="com.user.libraries.sharing.DataExchangerService"/>

    <receiver
        android:name="com.user.libraries.bluetooth.BluetoothStateReceiver"
        android:enabled="true">
        <intent-filter>
            <action android:name="android.bluetooth.adapter.action.STATE_CHANGED"/>
        </intent-filter>
    </receiver>

    <provider
        android:name="android.support.v4.content.FileProvider"
        android:authorities="${applicationId}.provider"
        android:exported="false"
        android:grantUriPermissions="true">
        <meta-data
            android:name="android.support.FILE_PROVIDER_PATHS"
            android:resource="@xml/provider_paths"/>
    </provider>

</application>

有什么想法可以解决这个问题吗?

Any idea how I can solve this issue?

推荐答案

此处的主要问题是您要添加

Main problem here is that you are adding

com.google.android.material:material:1.0.0-beta01

属于新发布的androidx软件包,如今与您的依赖项中的android支持库不兼容.

that belongs to newly released androidx package and nowadays it is not compatible with android support library that you have in your dependencies.

您有2个选择:

  1. com.google.android.material:material:1.0.0-beta01 替换为 com.android.support:design:28.0.0-beta01 (查看全部支持库 https://developer.android.com/topic/libraries/support-library /packages )(我建议)
  2. 使用Android Studio选项重构为AndroidX(请参见 https://material.io/开发/android/docs/getting-started/)(我不推荐)
  1. Replace com.google.android.material:material:1.0.0-beta01 with com.android.support:design:28.0.0-beta01 (see all support libraries https://developer.android.com/topic/libraries/support-library/packages) (that I recommend)
  2. Use Android Studio option Refactor to AndroidX (see https://material.io/develop/android/docs/getting-started/) (I do not recommend)

以下是工作代码示例:

 <android.support.design.widget.TextInputLayout
        style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        app:boxStrokeColor="@color/colorAccent"
        app:boxStrokeWidth="5dp">

        <android.support.design.widget.TextInputEditText
            android:id="@+id/messageEditText"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />

 </android.support.design.widget.TextInputLayout>

这篇关于添加依赖项com.google.android.material后,Android清单合并失败的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆