web-dev-qa-db-ja.com

マニフェストのマージに失敗しました:属性application @ appComponentFactory-Androidx

androidxを使用してGradleをビルドすると、次のエラーが発生します。この問題の解決を手伝ってください。

エラーメッセージ:Manifest merger failed:Attribute application @ appComponentFactory value =(Android.support.v4.app.CoreComponentFactory)from [com.Android.support:support-compat:28.0.0] AndroidManifest.xml:22:18-91 is [androidx.core:core:1.0.0] AndroidManifest.xml:22:18-86 value =(androidx.core.app.CoreComponentFactory)にもあります。

マニフェスト:

<?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="com.kanwarpreet.dealmybook">

    <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">

        <activity Android:name=".activities.SplashActivity" >
            <intent-filter>
                <action Android:name="Android.intent.action.MAIN" />
                <category Android:name="Android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity Android:name=".activities.LoginActivity" />
        <activity Android:name=".activities.RegisterActivity" />
        <activity
            Android:name=".activities.HomeActivity"
            Android:label="@string/title_activity_home"
            Android:theme="@style/AppTheme.NoActionBar" />
        <activity
            Android:name=".activities.BookDetailsActivity"
            Android:label="@string/title_activity_book_details"
            Android:theme="@style/AppTheme.NoActionBar"/>
        <activity Android:name=".activities.AddBookActivity" />
    </application>

</manifest>

Build.Gradle:

apply plugin: 'com.Android.application'

Android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.kanwarpreet.dealmybook"
        minSdkVersion 21
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "Android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-Android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.Android.support:appcompat-v7:28.0.0'
    implementation 'com.Android.support.constraint:constraint-layout:1.1.3'
    implementation 'com.Android.support:support-v4:28.0.0'
    implementation 'com.google.Android.material:material:1.0.0'
    implementation 'com.jakewharton:butterknife:10.1.0'
    annotationProcessor 'com.jakewharton:butterknife-compiler:10.1.0'
    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'
}
26

数時間の苦労の末、私はapp/build.gradleに以下を含めることで解決しました:

Android {
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

これらのフラグをgradle.propertiesに入れてください

Android.enableJetifier=true
Android.useAndroidX=true

マニフェストの変更:

implementation 'androidx.appcompat:appcompat:1.0.2'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'com.google.Android.material:material:1.1.0-alpha04'

参照: https://developer.Android.com/jetpack/androidx/migrate

33

これらのフラグをgradle.properties

Android.enableJetifier=true
Android.useAndroidX=true
28
Vishrut Mavani

このエラーの理由-

アップグレード後、androidx.core:coreは、プロジェクトがまだandroidxを使用していないときにどこかにアクセスされます。そのため、CoreComponentFactoryなどのクラスと他の多くのクラスが2か所で見つかりました-androidx.core:coreおよびcom.Android.support:support-compat。このため、このエラーが発生しました。

ソリューションとは何ですか?

AndroidXに移行する必要があります。 AndroidXについて知らない場合。お読みください AndroidXとは

プロジェクトを移行する方法

Android Studio 3.2(September 2018))の後、既存のプロジェクトをAndroidXに移行する直接オプションがあります。これにより、すべてのパッケージが自動的に屈折します。

移行する前に、プロジェクトをバックアップすることを強くお勧めします。

既存のプロジェクト

  • Android Studio> Refactor Menu> Migrate to AndroidX ...
  • 分析が行われ、下部にRefractorウィンドウが開きます。行われる変更を受け入れます。

image

新たなプロジェクト

これらのフラグをgradle.properties

Android.enableJetifier=true
Android.useAndroidX=true

@ ライブラリのマッピングでAndroidXパッケージが等しいかどうかを確認してください。

@ Migrate to AndroidX の公式ページを確認してください

19
Khemraj

エラーは明示的に言う-

[com.Android.support:support-compat:28.0.0] AndroidManifest.xml:22:18-91は[androidx.core:core:1.0.0]にもあります

AndroidXはGoogleの最新のサポートライブラリです。 すべての古いappcompatバージョン の以前のコンポーネントがすべて含まれています。 appcompat-v-any numberは使用しないでください。代わりに、AndroidXライブラリから同様のコンポーネントを使用してください。番号が付けられたサポートライブラリをGradleおよびコードがインポートされている場所から削除します。次に、gradleを同期します。

コンポーネントの類似性テーブルを見つけることができます here 。また、 AndroidXへの移行 に記載されている手順に従ってください。

再度、以前のappcompat番号付きバージョンの使用を停止します。現在AndroidXのみです。

お役に立てれば。

3

正確な理由を見つけるための1つの提案は、マニフェストファイルを開くことです。下部にMerge Manifestオプションが表示され、失敗の正確な理由が表示されます。 。

下の画像を参照

enter image description here

1
Jaykishan Sewak

プロジェクト全体のGradle設定。 IDE(eg Android Studio)users:Configured Gradle settings through the IDEこのファイルで指定された設定は上書きされます。ビルド環境の構成方法の詳細については、 http://www.gradle.org/docs/current/にアクセスしてください。 userguide/build_environment.html

デーモンプロセスに使用されるJVM引数を指定します。この設定は、メモリ設定の微調整に特に役立ちます。

org.gradle.jvmargs=-Xmx1536m
Android.enableJetifier=true
Android.useAndroidX=true

構成すると、Gradleは孵化並列モードで実行されます。このオプションは、分離プロジェクトでのみ使用してください。詳細については、 http://www.gradle.org/docs/current/userguide/multi_project_builds.html にアクセスしてください

sec:decoupled_projectsvorg.gradle.parallel=true
0
gopal jain