web-dev-qa-db-ja.com

Android StudioがAndroidサポートライブラリからAndroidxの使用を強制しているのはなぜですか?

Reactネイティブプロジェクトで作業していますが、突然、作業が停止し、エラーが発生し始めました。

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 also present at [androidx.core:core:1.0.0] AndroidManifest.xml:22:18-86 value=(androidx.core.app.CoreComponentFactory).
Suggestion: add ‘tools:replace=“Android:appComponentFactory”’ to <application> element at AndroidManifest.xml:7:5-117 to override.

28年以降、Googleがサポートライブラリクラスを使用して完了したこと、およびプロジェクト全体をサポートライブラリクラスからAndroidXクラスに移行する方法を知っています。

私の質問は:

  • AndroidXクラスに移行するのではなく、サポートライブラリクラスを使い続ける方法はありますか?

  • この問題を修正する方法は?

16
Mohsin

GoogleXとFirebaseのバージョンをロックダウンして、androidXを回避できます。

Android/build.gradleに追加:

buildscript {
  ...
  ext {
    // Lock down googlePlayServicesVersion
    googlePlayServicesVersion = "16.1.0"
    firebaseVersion = "17.6.0"
  }
}

またはgradle.propertiesに以下を追加します:

googlePlayServicesVersion=16.1.0
firebaseVersion=17.6.0
5
A-J-A

おそらくアプリレベルのgradleファイルをここに投稿してください。理想的には、更新された/最新の依存関係である他の依存関係を使用している場合、このエラーが発生します。

依存関係のいずれかが最新/更新されたものである場合は、githubから変更ログをチェックして、それをより古いバージョンにダウングレードしてください。私にとっての犯人は、内部的にandroidxを使用していて、このエラーを受け取っていたストライプバージョンでした。ダウングレードしてブーム!それはなくなった:)

また、gradle.propertiesファイルからandroidxを無効にします。

Android.useAndroidX=false
Android.enableJetifier=false

これにより、androidxが強制的に無効になります。

3
pramod_m

Dan Lew による

サポートライブラリアーティファクトは非推奨になり、今後の開発はすべてAndroidXに組み込まれるため、この移行を回避することはできません。しかし、うまくいけば、これらのヒントがより明確な移行パスを提供するでしょう。

2
Wiguna R

AndroidXクラスに移行するのではなく、サポートライブラリクラスを使い続ける方法はありますか?

はい、可能ですが、このイベントのみ延期できます。
あなたはそれを避けることはできません。

新しい Firebase libraries および新しい Google Play Librariesrequire androidx(以下のリストを確認してください)

すぐに、他の3番目のライブラリがこれらの依存関係を使用します。

この問題を修正する方法は?

サポートライブラリv.28以下で動作する最新バージョンのfirebase/google play services/thirdライブラリのみを使用できます。

ここでは、androidxの依存関係で機能し始めたfirebaseおよびgoogle playサービスライブラリのリストを示します。

Firebase:

Ads version 18.0.0
Analytics version 17.0.0
App Indexing version 19.0.0
Authentication version 18.0.0
Cloud Firestore version 20.0.0
Cloud Firestore-ktx version 20.0.0
Cloud Functions (client) version 18.0.0
Cloud Messaging version 19.0.0
Cloud Storage version 18.0.0
Dynamic Links version 18.0.0
In-App Messaging version 18.0.0
In-App Messaging Display version 18.0.0
Instance IDs version 19.0.0
ML Kit Common version 20.0.0
ML Kit Vision version 21.0.0
ML Kit Image Labeling Model version 18.0.0
ML Kit Face Detection Model version 18.0.0
ML Kit Object Detection and Tracking Model version 17.0.0
ML Kit Vision AutoML version 17.0.0
ML Kit Natural Language version 20.0.0
ML Kit Language Identification Model version 20.0.0
ML Kit Smart Reply Model version 20.0.0
ML Kit Translate Model version 20.0.0
ML Kit Model Interpreter version 20.0.0
Realtime Database version 18.0.0
Performance Monitoring version 18.0.0
Remote Config version 18.0.0
A/B Testing version 18.0.0

Playサービスライブラリ:

com.google.Android.datatransport:transport-api:2.0.0
com.google.Android.datatransport:transport-backend-cct:2.0.0
com.google.Android.datatransport:transport-runtime:2.0.0
com.google.Android.gms:play-services-ads:18.0.0
com.google.Android.gms:play-services-ads-identifier:17.0.0
com.google.Android.gms:play-services-ads-lite:18.0.0
com.google.Android.gms:play-services-afs-native:17.0.0
com.google.Android.gms:play-services-analytics:17.0.0
com.google.Android.gms:play-services-analytics-impl:17.0.0
com.google.Android.gms:play-services-appinvite:18.0.0
com.google.Android.gms:play-services-audience:17.0.0
com.google.Android.gms:play-services-auth:17.0.0
com.google.Android.gms:play-services-auth-api-phone:17.0.0
com.google.Android.gms:play-services-awareness:17.0.0
com.google.Android.gms:play-services-base:17.0.0
com.google.Android.gms:play-services-basement:17.0.0
com.google.Android.gms:play-services-cast:17.0.0
com.google.Android.gms:play-services-cast-framework:17.0.0
com.google.Android.gms:play-services-clearcut:17.0.0
com.google.Android.gms:play-services-cronet:17.0.0
com.google.Android.gms:play-services-drive:17.0.0
com.google.Android.gms:play-services-fido:18.0.0
com.google.Android.gms:play-services-fitness:17.0.0
com.google.Android.gms:play-services-flags:17.0.0
com.google.Android.gms:play-services-games:18.0.0
com.google.Android.gms:play-services-gass:18.0.0
com.google.Android.gms:play-services-gcm:17.0.0
com.google.Android.gms:play-services-identity:17.0.0
com.google.Android.gms:play-services-iid:17.0.0
com.google.Android.gms:play-services-instantapps:17.0.0
com.google.Android.gms:play-services-location:17.0.0
com.google.Android.gms:play-services-maps:17.0.0
com.google.Android.gms:play-services-measurement:17.0.0
com.google.Android.gms:play-services-measurement-api:17.0.0
com.google.Android.gms:play-services-measurement-impl:17.0.0
com.google.Android.gms:play-services-measurement-sdk:17.0.0
com.google.Android.gms:play-services-measurement-sdk-api:17.0.0
com.google.Android.gms:play-services-nearby:17.0.0
com.google.Android.gms:play-services-oss-licenses:17.0.0
com.google.Android.gms:play-services-panorama:17.0.0
com.google.Android.gms:play-services-phenotype:17.0.0
com.google.Android.gms:play-services-places:17.0.0
com.google.Android.gms:play-services-places-placereport:17.0.0
com.google.Android.gms:play-services-plus:17.0.0
com.google.Android.gms:play-services-safetynet:17.0.0
com.google.Android.gms:play-services-stats:17.0.0
com.google.Android.gms:play-services-tagmanager:17.0.0
com.google.Android.gms:play-services-tagmanager-api:17.0.0
com.google.Android.gms:play-services-tagmanager-v4-impl:17.0.0
com.google.Android.gms:play-services-tasks:17.0.0
com.google.Android.gms:play-services-vision:18.0.0
com.google.Android.gms:play-services-vision-common:18.0.0
com.google.Android.gms:play-services-vision-image-label:18.0.0
com.google.Android.gms:play-services-wallet:17.0.0
com.google.Android.gms:play-services-wearable:17.0.0
2

あなたはreact-nativeを使用していると述べています。他で言及されているように、AndroidXを延期することはできますが、これを回避することはできません。

反応ネイティブでは特に、gradleはAndroid St​​udioを介した元のリファクタリング中を除いてソースファイルをジェット化せず、反応ネイティブはそのネイティブコードをソースファイルとして出荷するため、変換が困難でした。

'jetifier' ツールを使用するだけで、インストールして初めて実行した後、package.jsonのpostinstallにnpx jetifyを追加して、ノードモジュールのインストール全体で永続的なJetificationを実行できます。/updates。

その後、アプリをAndroidXに正常に変換できます。新しいAndroidXライブラリバージョンに応じて開始しますが、まだ変換されていないライブラリを使用します。 react-native 0.60、これはAndroidXになります

AndroidXを延期する必要があり、react-nativeを使用している場合、少なくともreact-native 0.59の場合は、jetifierツールを逆に使用して、nodexmodulesのソース参照をandroidxからcompat参照に変更することもできます。

2
Mike Hardy