Android Material和appcompat Manifest合并失败

我还有下一年级

dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:28.0.0-rc01'
implementation 'com.android.support.constraint:constraint-layout:1.1.2'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
implementation 'com.google.android.material:material:1.0.0-rc01'
}

但当我想要构建应用程序时,我得到下一个日志:

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

好!去显化并去做:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="ru.chopcode.myapplication">


<application
tools:replace="android:appComponentFactory"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
</application>


</manifest>

然后我在我的Logcat中得到这个错误:

Manifest merger failed with multiple errors, see logs that I have Linked with it
395016 次浏览

创建新项目并比较构建。并替换了所有Gradle文件

implementation 'com.android.support:appcompat-v7:27.1.1'
implementation 'com.android.support.constraint:constraint-layout:1.1.1'

和其他与新项目相同的依赖项 像这样

implementation 'androidx.appcompat:appcompat:1.0.0-alpha3'


implementation 'androidx.constraintlayout:constraintlayout:1.1.2'


implementation 'androidx.lifecycle:lifecycle-extensions:2.0.0-alpha1'


androidTestImplementation 'androidx.test:runner:1.1.0-alpha3'


androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0-alpha3'


implementation 'androidx.core:core-ktx:1.0.0-alpha3'

然后固定导入在kotlin文件中使用androidx。

只需将依赖项内第一行和最后一行中的“rc01”更改为“alpha1” 这是为我工作

把机器人移走。支持依存关系

    implementation 'com.android.support:appcompat-v7:28.0.0-rc01'

引用材料指南

如果你还不想切换到新的androidx和com.google.android.material包,你可以通过com.android.support:design:28.0.0-alpha3依赖使用Material Components。

注意:你不应该在你的应用程序中同时使用com.android.support和com.google.android.dependencies。

仅仅删除这个依赖就可以了

    implementation 'com.android.support:appcompat-v7:28.0.0-rc01'

这是一个完整的依赖示例

    dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.google.android.material:material:1.0.0-beta01'
implementation 'com.android.support.constraint:constraint-layout:1.1.2'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}

从Android P开始,支持库已经移动到AndroidX

请为你的摘自本页做一个重构。

https://developer.android.com/topic/libraries/support-library/refactor

我也有类似的问题。在gradle.properties文件中增加了两行:

android.useAndroidX=true
android.enableJetifier=true

这两行自动解决了我在谷歌的文件和第三方依赖之间的依赖冲突。下面是后面的链接:https://developer.android.com/topic/libraries/support-library/androidx-overview#new-project

在我的情况下,这是工作完美.. 我在清单文件

中添加了以下两行代码
tools:replace="android:appComponentFactory"
android:appComponentFactory="whateverString"

信用归对于这个答案

Manifest file Example

当我试图将Kotlin-KTX库添加到我的项目时,我遇到了同样的错误。

我尝试AndroidX迁移,问题解决了!

Refactor/Migrate to AndroidX

首先,一定要在清单标签中添加这一行

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

然后在Android studio中添加工具替换建议的工具

除非你不想使用androidx

所以在我的情况下,我正在使用一个使用androidx的库,但我不使用androidx,所以当我降级该库版本的问题得到了解决。

就我而言:

implementation 'com.github.turing-tech:MaterialScrollBar:13.+'

上述图书馆构成了问题13。+将自动获得一个使用androidx的新版本的库。所以我把库版本降级为:

implementation 'com.github.turing-tech:MaterialScrollBar:13.2.5'

问题解决了。

改变你的构建。Gradle依赖到

 implementation 'com.android.support:appcompat-v7:28.0.0-alpha3'

 implementation 'com.android.support:appcompat-v7:28.0.0-alpha1'

遵循以下步骤:

  • 去重构和点击迁移到AndroidX
  • 单击执行重构
我在使用Groupie时也有同样的错误。 implementation 'com.xwray:groupie:2.3.0' < / p >

我通过将版本更改为implementation 'com.xwray:groupie:2.1.0'来解决它

失败原因

你正在使用材料库,它是AndroidX的一部分。 如果你不了解AndroidX,请通过这个答案
一个应用程序应该使用AndroidX或旧的Android支持库。

例如:

在你的gradle中,你正在使用

  • com.android.support:appcompat-v7(旧的——Android支持库的一部分——)
  • com.google.android.material:material (AndroidX的一部分)(com.android.support:design的AndroidX构建工件)

解决方案

所以解决方案是使用AndroidX或旧的支持库。我建议使用AndroidX,因为Android在28.0.0版本之后将不会更新支持库。参见支持库的发布说明

只需迁移到AndroidX。在这里是我迁移到AndroidX的详细答案。我把答案的必要步骤写在这里。

在迁移之前,强烈建议备份您的项目。

现有的项目

  • Android Studio >重构菜单>迁移到AndroidX…
  • 它将分析并在底部打开折射窗口。接受要完成的更改。

image

新项目

把这些标志放在你的gradle.properties

android.enableJetifier=true
android.useAndroidX=true

检查@AndroidX包的库映射

检查@迁移到AndroidX官方页面

Jetifier是什么?< / >

此问题主要发生在旧的依赖关系

有两种解决方案:

第一个:

Project level gradle文件中更新所有old dependencies类路径

classpath 'com.android.tools.build:gradle:3.3.1'
classpath 'com.google.gms:google-services:4.2.0'

第二个:

你的项目Migrate to AndroidX

从Android Studio菜单> Refanctor -> Migrate to AndroidX

谢谢,如果有人从这个答案中得到帮助,请告诉我。

在可能的情况下,我不想传递到androidX。我得检查一下我最后的改动。我算出新组件是——> lottie 2.8.0

所以我把它降级为:implementation 'com.airbnb.android:lottie:2.7.0'

在构建中更改proguardFile。gradle(模块:app)到以下

proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'

而不是

proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

这对我很有效

1.在app/build.gradle的末尾添加了这些代码:

configurations.all {
resolutionStrategy.force 'com.android.support:support-v4:28.0.0'
// the above lib may be old dependencies version
}

2.修改sdk和tools版本至28:

compileSdkVersion 28
buildToolsVersion '28.0.3'
targetSdkVersion  28

3.在你的AndroidManifest.xml文件中,你应该添加两行:

<application
android:name=".YourApplication"
android:appComponentFactory="AnyStrings"
tools:replace="android:appComponentFactory"
android:icon="@drawable/icon"
android:label="@string/app_name"
android:largeHeap="true"
android:theme="@style/Theme.AppCompat.Light.NoActionBar">

或者简单地

  • 进入Refactor (Studio -> Menu -> Refactor)
  • 单击“迁移到AndroidX”。它的工作
  • 这是工作。

简单的解决方案-迁移到AndroidX

gradle.properties中,只需添加下面两个脚本

android.useAndroidX=true
android.enableJetifier=true

什么原因↓

AndroidX中的所有包都位于以字符串AndroidX开头的一致命名空间中。支持库包已映射到相应的androidx中。*包。有关所有旧类和构建构件到新类的完整映射,请参阅包重构页面。

请参见the Package Refactoring page

  • 转到Refactor (图像)
  • 单击“迁移到AndroidX”。它的工作
  • 这是工作。

只需将这两行代码添加到您的Manifest文件中

tools:replace="android:appComponentFactory"
android:appComponentFactory="whateverString"

最后通过在android/build.gradle文件中添加两行找到了一个快速简单的解决方案。

googlePlayServicesVersion = "16.+"


firebaseVersion = "17.6.0"

请遵循这个100%正确。

将这些行添加到AndroidManifest.xml文件中。

tools:replace="android:appComponentFactory"


android:appComponentFactory="whateverString"

同样的问题我已经有三天了。

这就像android希望我们要么使用Kotlin,要么使用AndroidX,他们正在抛弃android。

但我是这样解出来的。

  • 我将项目迁移到AndroidX上。这不会带来任何与此问题相关的错误,它会分别更新文件。在应用程序中不需要更改任何方法、类或变量名。

注意:您必须使用最新的库(build。在android studio 3.4.1的最新稳定版本中

如果您不打算迁移到AndroidX,请遵循以下步骤

  1. 在终端类型gradlew app:dependencies中
  2. 当依赖项显示在窗口中后,按Ctrl+f并输入androidX
  3. 你会发现所有在内部使用androidx lib的依赖项,你可能不得不降级它或使用替代,以确保它不再在内部使用androidx lib。

我所做的就是转到顶部菜单上的“重构”选项。

然后选择“迁移到AndroidX”

接受将项目保存为zip文件。

请更新Android Studio和Gradle,以确保没有遇到任何问题。

为了解决这个问题,我建议显式地定义ext变量的版本 在你的根项目的android/build.gradle

ext {
googlePlayServicesVersion = "16.1.0" // default: "+"
firebaseVersion = "15.0.2" // default: "+"


// Other settings
compileSdkVersion = <Your compile SDK version> // default: 23
buildToolsVersion = "<Your build tools version>" // default: "23.0.1"
targetSdkVersion = <Your target SDK version> // default: 23
supportLibVersion = "<Your support lib version>" // default: 23.1.1
}
< p >参考 https://github.com/zo0r/react-native-push-notification/issues/1109#issuecomment-506414941 < / p >

这完全取决于库版本的兼容性

我在这只奇怪的虫子面前呆了两个小时。 我通过执行这些步骤解决了这个错误

挂起你的构建。Gradle依赖到

  implementation 'com.google.android.gms:play-services-maps:17.0.0'

  implementation 'com.google.android.gms:play-services-maps:15.0.0'
  1. 请到Refactor->Migrate->Migrate to Android X。

  2. 请将此添加到您的gradle.properties文件:

    android.enableJetifier=true
    android.useAndroidX=true
    

And perform Sync.

迁移到androidX,如果它是一个现有的项目。如果是新项目,将这两个标志添加到Gradle.propeties

android.enableJetifier=true
android.useAndroidX=true

更多详细步骤https://developer.android.com/jetpack/androidx 或检查AndroidX是什么?

看到这张图片并在你的android AndroidManifest.xml中添加这一行

tools:replace="android:appComponentFactory"
android:appComponentFactory="whateverString"

enter image description here

我也面临着同样的问题, 对于你的android工作室,你只需要更改android Gradle插件3.3.2版本 和Gradle版本是5.1.1

我不知道这是不是正确的答案,但这对我来说很有效

增加网格包装属性

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

和Build Gridle to

    classpath 'com.android.tools.build:gradle:3.4.2'

它显示错误是因为版本。

在我的情况下,我被添加在清单文件'

tools:replace="android:appComponentFactory"
android:appComponentFactory="whateverString"

应用程序标签当然,

如果您正在使用电容,请在package.json中升级到电容/core 2.0.1或更高版本

试试这个

tools:replace="android:appComponentFactory"
android:appComponentFactory="android.support.v4.app.CoreComponentFactory"

重新构建项目。