web-dev-qa-db-ja.com

appComponentFactoryのマニフェストマージが失敗する

GoogleのいわゆるMaterial Design 2.0を使用するには、追加する必要があります

implementation 'com.google.Android.material:material:1.0.0-rc01'

アプリGradleにも含まれています

implementation 'com.Android.support:appcompat-v7:28.0.0-rc02'    

競合を示しています

ログの内容は次のとおりです

Manifest merger failed : Attribute application@appComponentFactory value=(Android.support.v4.app.CoreComponentFactory) from [com.Android.support:support-compat:28.0.0-rc02] AndroidManifest.xml:22:18-91   

is also present at [androidx.core:core:1.0.0-rc01] 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.

それをマニフェストに追加した後でも、マニフェストの合併が複数のエラーで失敗したことを示しています

25
d02d33pak

このエラーは最近よく見られます:

このタイプのエラーが発生した場合:ライブラリが更新され、AndroidXの使用を提供しているが、古いライブラリを使用している場合。

これを解決する手順を実行できます。

  • プロジェクトをAndroidX:に移行します

Android St​​udio 3.2以降では、メニューバーから[リファクタリング]> [AndroidXに移行]を選択して、既存のプロジェクトをすばやくAndroidXに移行できます。

注:変換が必要な依存関係を持つサードパーティライブラリを使用しない既存のプロジェクトを移行するには、Android.useAndroidXフラグを設定できます。 totrueおよびAndroid.enableJetifierフラグをtofalse.

このステップは、すべての回答が手動で行うべきことをすべて自動で行います

ランタイムビルドの失敗など、他のエラーが発生した場合でも、次のようになります。

  • キャッシュを無効にして再起動

OR

  • プロジェクトをきれいにする

それがすべてに役立つことを願っています。ありがとうございました。

これを修正するには、tools名前空間を追加し、IDEが推奨するアプリケーション要素に推奨属性を適用する必要があります。

<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android" xmlns:tools="http://schemas.Android.com/tools"
    package="your.package.uri">

 <application
        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"
        tools:replace="Android:appComponentFactory"
        Android:appComponentFactory="androidx">

ソース

8
Tommie C.

Build.gradleファイル内のすべてのAndroid依存関係をandroidx依存関係に置き換えます。

例えば:

implementation 'androidx.appcompat:appcompat:1.0.0'
implementation 'androidx.constraintlayout:constraintlayout:2.0.0-alpha2'
implementation 'androidx.annotation:annotation:1.0.0'
androidTestImplementation 'androidx.test:runner:1.1.0-alpha3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0-alpha4'
6
Arnav Rao

提案:tools:replace="Android:appComponentFactory":5:5-19:19の要素に 'AndroidManifest.xml'を追加してオーバーライドします。

tools:replace="Android:appComponentFactory"を追加しても修正しても問題が解決しない場合は、新しいプロジェクトを作成し、そこにコードと同じ依存関係をコピーして貼り付けます。その後、修正されることを願っています。


問題が解決しない場合は、次の2つを追加してみてください。

tools:replace="Android:appComponentFactory"
Android:appComponentFactory="whateverString"

もちろんAndroidManifest.xml> <applicationタグ。

5
ʍѳђઽ૯ท

同様の問題がありました。 gradle.propertiesファイルの2行:

Android.useAndroidX=true
Android.enableJetifier=true

フォローするリンク: https://developer.Android.com/topic/libraries/support-library/androidx-overview#new-project

3
Nabila Tajrin

依存関係の置換:

implementation 'com.google.Android.material:material:1.0.0-rc01'

に:

implementation 'com.Android.support:design:28.0.0'