当前位置: 首页 > 知识库问答 >
问题:

添加依赖项com后,Android清单合并失败。谷歌。Android布料

谷梁嘉运
2023-03-14

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

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

没有材料库,一切正常。

我已经试过了

  1. 我改变了依赖项的顺序(这显然不起作用)
  2. 我还试图按照错误消息中的建议向我们的清单文件中添加工具:替换="android: appComponentFactory"。但是这给我留下了一个新的错误消息:

java.lang.运行时异常:清单合并失败并有多个错误,请参阅日志com.android.builder.core.Androiduilder.mergeManifestsForApplication(Androiduilder.java:524)com.android.build.gradle.tasks.ProcessManifest.doFullTaskAction(ProcessManifest.java:75)在com.android.build.gradle.internal.tasks.增量ask.task行动(增量ask.java:106)

我查看了日志文件,但idea中只显示了一条警告。日志是

2018-08-08 11:08:21500[线程267]警告-。工具。主意模型ManifestInfo-getMergedManifest失败Manifest合并失败,出现多个错误,请参阅日志2018-08-08 11:08:21642[线程267]警告-。工具。主意模型ManifestInfo-getMergedManifest失败Manifest合并失败,出现多个错误,请参阅日志2018-08-08 11:08:21917[J pool 0/7]

更多信息

API版本

android {
compileSdkVersion 28
buildToolsVersion '28.0.0'

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

(文件中选择了相同的API。)

依赖项:

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>

你知道我该怎么解决这个问题吗?

共有3个答案

姬弘文
2023-03-14

我也有这个问题。当在依赖关系中使用这个库时

implementation 'com.google.android.material:material:1.0.0'

给这个:

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

我切换到AndroidX时遇到了这个问题

去重构-

我的问题解决了

折返

宋俊民
2023-03-14

这里的主要问题是你正在添加

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

这属于新发布的androidx包,现在它是不兼容的android支持库,你有你的依赖。

你有两个选择:

  1. 替换com.google.Android材料:材料:1.0.0-beta01,带有com.Android支持:设计:28.0.0-beta01(参见所有支持库https://developer.android.com/topic/libraries/support-library/packages)(我推荐)

下面是工作代码的示例:

 <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>
刘焱
2023-03-14

别忘了加上

android.useAndroidX=true
android.enableJetifier=true

给你的格拉德尔。财产。我总是忘记这一点,当我上了一台新机器,因为格拉德尔。属性不在源代码管理中。如果我们在这种情况下有一个合理的错误,那就太好了。

 类似资料:
  • 我似乎得到了这样的错误:

  • 清单合并失败:属性Application@AppComponentFactory value=(android.support.v4.app.CoreComponentFactory)来自[com.android.support:support-compat:28.0.0]AndroidManifest.xml:22:18-91 也存在于[androidx.core:core:1.0.0]andr

  • 我得到下面的错误信息。 错误:任务执行失败:app:processDebugManifest。清单合并失败:uses-sdk:minSdkVersion 1不能小于库中声明的版本4[com . Android . support:multi dex:1 . 0 . 1]C:\ Users \ Nitesh \ Downloads \ sun calculator(1)\ sun calculato

  • 在能够导入RecyclerView后弹出此错误消息。我找不到源头,也找不到解决方法。错误消息似乎也很难理解。 错误:任务“:app:ProcessDebugManifest”执行失败。清单合并失败:来自[com.android.support:AppCompat-V7:25.3.1]androidmanifest.xml:27:9-31的属性元数据#android.support.version@

  • 我在关于支付网关的项目中遇到了麻烦。根据EBS的指导原则,我将模块导入到我的项目中并进行编译。但是当它构建时,它给我的错误是:`error:execution for task':app:processDebugManifest'。 清单合并失败:来自AndroidManifest.xml:14:9-43的属性application@icon value=(@mipmap/ic_launcher)

  • 我试图通过将< code > implementation ' org . Gurux:Gurux . serial . android:1 . 0 . 1 ' 添加到我的build.gradle-file来将Gurux添加到我的Android项目中,但是我得到一个错误消息,说“Manifest merge failed:Android:exported需要显式指定用于。当相应的组件定义了意图过滤