当前位置: 首页 > 面试题库 >

导入模块后清单合并失败

穆浩皛
2023-03-14
问题内容

嗨,我正在开发SDK,当我将这些SDK添加到应用程序Proyect中时,出现以下错误:

清单合并失败:[com.android.support:support-compat:28.0.0]
AndroidManifest.xml:22:18-91的属性application @ appComponentFactory value
=(android.support.v4.app.CoreComponentFactory)

    is also present at [androidx.core:core:1.0.1] AndroidManifest.xml:22:18-86 value=(androidx.core.app.CoreComponentFactory).
    Suggestion: add 'tools:replace="android:appComponentFactory"' to <application> element at AndroidManifest.xml:22:5-125:19 to override.

build.gradle是以下内容

应用程式build.gradle

dependencies {
    implementation project(':sdkA')
    implementation project(':sdkB')

    implementation 'org.webrtc:google-webrtc:1.0.28032'
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support:preference-v7:28.0.0'
    implementation 'com.android.support:preference-v14:28.0.0'
    implementation 'com.android.support:design:28.0.0'
    implementation 'com.android.support:support-v4:28.0.0'
    implementation 'com.android.support:gridlayout-v7:28.0.0'
    implementation 'com.android.support:recyclerview-v7:28.0.0'
    implementation 'com.google.android.gms:play-services-auth:16.0.1'
    implementation 'com.google.android.gms:play-services-location:16.0.0'
    implementation 'io.michaelrocks:libphonenumber-android:8.4.1'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    implementation 'com.google.android:flexbox:1.0.0'
    implementation 'com.github.woxthebox:draglistview:1.6.3'
    implementation 'com.balysv:material-ripple:1.0.2'
    implementation 'pl.droidsonroids.gif:android-gif-drawable:1.2.16'

    implementation('com.crashlytics.sdk.android:crashlytics:2.8.0@aar') {
        transitive = true
    }

    // Google Lifecycle Components
    implementation "android.arch.lifecycle:extensions:1.1.1"
    annotationProcessor "android.arch.lifecycle:compiler:1.1.1"
}

sdkA的build.gradle

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

    implementation 'org.webrtc:google-webrtc:1.0.28032'

    implementation('io.socket:socket.io-client:1.0.0') {
        exclude group: 'org.json', module: 'json'
    }

    implementation('com.crashlytics.sdk.android:crashlytics:2.8.0@aar') {
        transitive = true
    }


    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    implementation 'com.google.android.material:material:1.0.0'



    // Google Lifecycle Components
    implementation "android.arch.lifecycle:extensions:1.1.1"
    annotationProcessor "android.arch.lifecycle:compiler:1.1.1"

    implementation 'androidx.appcompat:appcompat:1.0.2'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test:runner:1.2.0'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
}

sdkB的build.gradle

dependencies {
    implementation "com.android.support:appcompat-v7:27.1.1"
    implementation "com.android.support:recyclerview-v7:27.1.1"
}

怎么解决呢?

谢谢


问题答案:

好的,我过去大约一天一直在解决这个问题。恶梦。

但是我至少现在对我一直在从事的项目都有效,它相当大,并且具有许多其他的android依赖项。

请参阅此问题,其中Mike
Hardy可以提供很大的帮助。https://github.com/mikehardy/jetifier/issues/27

我建议在0.60.0降落之前避免使用AndroidX。

问题 的根源对于我们大多数人来说 ,问题 的根源是+gradle依赖项中的范围选择器。

如以下以react-native-google-analytics-bridge中的示例所示:

    compile "com.google.android.gms:play-services-analytics:${safeExtGet('googlePlayServicesVersion', '+')}"
    compile "com.google.android.gms:play-services-tagmanager-v4-impl:${safeExtGet('googlePlayServicesVersion', '+')}"

对于我们大多数人来说,我们不在顶级android / build.gradle中设置googlePlayServicesVersion值

所以我们要指定googlePlayServicesVersion = "16.+"+,因为还有其他各种Google服务包可用,而且它们的版本号也不尽相同。这将捕获16.XX,但不会超出该范围。17.XX还有其他问题。

而且我们还想将supportLibVersion设置为28.0.0,这是android支持库使用的:com.android.support:appcompat-v7最常见。

android / build.gradle

buildscript {
    ext {
        buildToolsVersion = "28.0.3"
        minSdkVersion = 21
        compileSdkVersion = 28
        targetSdkVersion = 28
        supportLibVersion = "28.0.0"
        googlePlayServicesVersion = "16.+"
    }
...

AndroidManifest.xml的第一行: <manifest xmlns:tools="http://schemas.android.com/tools"

应用标签: tools:replace="android:appComponentFactory" android:appComponentFactory="android.support.v4.app.CoreComponentFactory"

确保使用4.10.1的gradle-wrapper.properties

distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.1-all.zip

最后确保您没有使用androidX。

gradle.properties:

android.enableJetifier=false
android.useAndroidX=false

附加步骤(您可能需要此步骤)

失败的话,也尝试添加喷射器。我们将使用它来运行您的node_modules并确保所有内容都使用非androidx库。

npm i jetifier --save-dev 要么 yarn add jetifier --dev

然后添加到安装后脚本

"scripts": {
   "postinstall": "jetify -r"
}


 类似资料:
  • 这是我的毕业生: 这是我的Android清单:

  • 错误:任务“:app:ProcessDebugManifest”执行失败。 清单合并失败:来自AndroidManifest.xml:13:9-42的属性application@icon value=(@mipmap/appiconnew)也存在于[com.pnikosis:materialish-progress:1.0]AndroidManifest.xml:13:9-45 value=(@d

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

  • 问题内容: 我正在将当前项目的大型应用程序移至Android Studio和Gradle中。我目前陷入以下问题: 我尝试将以下属性添加到主文件: 这些属性定义都不起作用。我究竟做错了什么? 问题答案: 试试看: 将此添加到 将此添加到 基于此,它应该覆盖所有元素。“将低优先级声明替换为带注释的声明。”

  • 清单合并失败:属性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

  • 我在移动我目前的项目巨大的应用程序到Android Studio和Gradle的过程中。我目前被困在以下问题上: 我尝试将以下属性添加到主文件中: 这些属性定义都不起作用。我做错了什么?