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'
}
数時間の苦労の末、私は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'
これらのフラグをgradle.properties
Android.enableJetifier=true
Android.useAndroidX=true
アップグレード後、androidx.core:core
は、プロジェクトがまだandroidxを使用していないときにどこかにアクセスされます。そのため、CoreComponentFactory
などのクラスと他の多くのクラスが2か所で見つかりました-androidx.core:core
およびcom.Android.support:support-compat
。このため、このエラーが発生しました。
AndroidXに移行する必要があります。 AndroidXについて知らない場合。お読みください AndroidXとは?
Android Studio 3.2(September 2018))の後、既存のプロジェクトをAndroidX
に移行する直接オプションがあります。これにより、すべてのパッケージが自動的に屈折します。
移行する前に、プロジェクトをバックアップすることを強くお勧めします。
既存のプロジェクト
新たなプロジェクト
これらのフラグをgradle.properties
Android.enableJetifier=true
Android.useAndroidX=true
@ ライブラリのマッピングでAndroidXパッケージが等しいかどうかを確認してください。
@ Migrate to AndroidX の公式ページを確認してください
エラーは明示的に言う-
[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のみです。
お役に立てれば。
プロジェクト全体の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