私は次の学年があります
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
依存関係の最初と最後の行の "rc01"を "alpha1"に変更するだけです。
私は同様の問題を抱えていました。 gradle.properties
ファイルに2行追加しました。
Android.useAndroidX=true
Android.enableJetifier=true
この2行は、Googleのファイルとサードパーティの依存関係との間の私の依存関係の競合を自動的に解決しました。フォローするリンクは次のとおりです。 https://developer.Android.com/topic/libraries/support-library/androidx-overview#new-project
AndroidX の一部である資料ライブラリーを使用しています。あなたがAndroidXを知らないならば、 この答え - を通過してください。
1つのアプリはAndroidXまたは古いAndroid Supportライブラリを使用する必要があります。あなたがこの問題に直面したのはそのためです。
例えば -
あなたのgradleでは、あなたは使っています
com.Android.support:appcompat-v7
(昔の一部 - Androidサポートライブラリ - )com.google.Android.material:material
(AndroidXの一部)(com.Android.support:design
のAndroidXビルド成果物)そのため、解決策はAndroidXか古いSupport Libraryを使うことです。 Androidはバージョン28.0.0以降のサポートライブラリを更新しないため、AndroidXを使用することをお勧めします。 Support Libraryの release notes を参照してください。
AndroidXに移行してください。 ここ はAndroidXに移行するための私の詳細な回答です。私はその答えから必要なステップをここに置いています。
移行する前に、プロジェクトをバックアップすることを強くお勧めします。
既存プロジェクト
新しいプロジェクト
これらのフラグをあなたのgradle.properties
に入れてください
Android.enableJetifier=true
Android.useAndroidX=true
@ 同じAndroidXパッケージのライブラリマッピングを確認してください 。
チェック@ AndroidXへの移行の公式ページ
gradle.properties
で、以下の2つのスクリプトを追加します
Android.useAndroidX=true
Android.enableJetifier=true
理由は何でしたか↓
AndroidXのすべてのパッケージは、文字列androidxで始まる一貫した名前空間に存在します。サポートライブラリパッケージは、対応するandroidx。*パッケージにマップされています。すべての古いクラスとビルドアーティファクトの新しいクラスへの完全なマッピングについては、パッケージリファクタリングページを参照してください。
パッケージリファクタリングページをご覧ください
Android P以降、サポートライブラリは AndroidX に移動しました。
このページからあなたの libsのためのリファクタリングをしてください 。
https://developer.Android.com/topic/libraries/support-library/refactor
私の場合、これは完璧に動作しています。マニフェストファイル内に2行以下のコードを追加しました。
tools:replace="Android:appComponentFactory"
Android:appComponentFactory="whateverString"
クレジットは この答えに /.
Android.support依存関係を削除するだけです
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'
}
これらの2行のコードをマニフェストファイルに追加するだけです
tools:replace="Android:appComponentFactory"
Android:appComponentFactory="whateverString"
最後に、Android/build.gradle
ファイルに2行追加することで、すばやく簡単な解決策を見つけました。
googlePlayServicesVersion = "16.+"
firebaseVersion = "17.6.0"
この100%正しいことに従ってください。
次の手順を実行します:
トップメニューの[リファクタリング]オプションに移動するだけでした。
次に、「AndroidXに移行」を選択します
同意して、プロジェクトをZipファイルとして保存します。
問題が発生しないように、Android StudioとGradleを更新してください。
androidxを使いたくない場合のみ
だから私の場合私はandroidxを使用していたライブラリを使用していますが、私はそのライブラリのバージョンをダウングレードしたとき問題が解決されたのでandroidxを使用していません。
私の場合:
implementation 'com.github.turing-tech:MaterialScrollBar:13.+'
上記のライブラリは問題13になります+は自動的にandroidxを使用してライブラリの新しいバージョンを取得します。だから私はにライブラリのバージョンをダウングレードしました:
implementation 'com.github.turing-tech:MaterialScrollBar:13.2.5'
そして問題は解決しました。
既存のプロジェクトの場合、androidXに移行します。新しいプロジェクトの場合、これら2つのフラグをGradle.propetiesに追加します
Android.enableJetifier = true
Android.useAndroidX = true
詳細な手順については https://developer.Android.com/jetpack/androidx またはこれを確認してください AndroidXとは
新しいプロジェクトを作成し、build.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を使うようにインポートを修正しました。
[リファクタリング]-> [移行]-> [Android Xへの移行]に移動してください。
これをgradle.propertiesファイルに追加してください:Android.enableJetifier = true Android.useAndroidX = true
そして、同期を実行します。
私は2時間のこの奇妙なバグに直面していました。これらの手順を実行してこのエラーを解決しました
build.gradleの依存関係を変更
implementation 'com.google.Android.gms:play-services-maps:17.0.0'
に
implementation 'com.google.Android.gms:play-services-maps:15.0.0'
私はこの同じ問題を3日間抱えていました。
AndroidがKotlinまたはAndroidXのいずれかを使用することを望んでいるように、彼らはAndroidを廃止しています。
しかし、これは私がそれを解決した方法です。
注意:Android studio 3.4.1の最新の安定バージョンで最新のライブラリ(build.grudleファイル)を使用する必要があります。
これらの行をAndroidManifest.xmlファイルに追加します。
tools:replace = "Android:appComponentFactory" Android:appComponentFactory = "whateverString"
この問題は主に 古い依存関係 で発生しました。
2つの解決策があります。
最初の1つ:
old dependencies
ファイルからすべてのProject level gradle
および ClassPaths を更新します。
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に移行する予定がない場合は、以下の手順に従ってください
まず最初に manifest tag にこの行を追加してください。
xmlns:tools="https://schemas.Android.com/tools"
それからツールを追加して、Androidスタジオであなたが提案したものを置き換えます
Groupie(実装 'com.xwray:groupie:2.3.0')を使用しているときに同じエラーが発生しました
バージョンを(実装 'com.xwray:groupie:2.1.0')に変更して解決しました
場合によっては、私はandroidXに渡したくありませんでした。そして最後の変更をチェックしなければなりません。私は新しいコンポーネントが - > lottie 2.8.0であることを理解しています。
これが誰かに役立つことを願っています。
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とツールのバージョンを28に変更しました。
compileSdkVersion 28
buildToolsVersion '28.0.3'
targetSdkVersion 28
3. AndroidManifest.xmlファイルに2行追加します。
<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">
この問題を解決するには、ルートプロジェクトのAndroid/build.gradle
でext変数のバージョンを明示的に定義することをお勧めします
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
}
参照 https://github.com/zo0r/react-native-Push-notification/issues/1109#issuecomment-506414941
Build.gradle(Module:app)のproguardFileを次のように変更します。
proguardFiles getDefaultProguardFile('proguard-Android-optimize.txt'), 'proguard-rules.pro'
の代わりに
proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
これは私のために働きました