androidxとmultidexエラーを引き起こす依存関係のサポート androidxとAndroidのサポートを同時に使用することはできません。だから私は完全にandroidxに移行します。しかし、私の依存ライブラリの1つはAndroidサポート "lottie"を使用していました。
上記の状況では何ができますか?プロジェクトから「lottie」を削除する必要があります。
以下は私のグラドルです
defaultConfig {
minSdkVersion 19
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "Android.support.test.runner.AndroidJUnitRunner"
vectorDrawables.useSupportLibrary = true
multiDexEnabled true
}
ext{
lottieVersion = "2.5.4"
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
def androidx = "1.0.0-rc01"
api "androidx.constraintlayout:constraintlayout:1.1.2"
api "androidx.appcompat:appcompat:$androidx"
api "androidx.recyclerview:recyclerview:$androidx"
api "androidx.cardview:cardview:$androidx"
api "androidx.core:core-ktx:$androidx"
api "com.google.Android.material:material:1.0.0-rc01"
implementation "com.google.code.gson:gson:2.8.5"
implementation "androidx.multidex:multidex:2.0.0"
implementation "com.airbnb.Android:lottie:$lottieVersion"
}
プロジェクトでJetifier
を有効にできます。これにより、基本的にプロジェクトの依存関係のAndroid Support Library
依存関係をAndroidX
- onesと交換します。 (例:Lottieの依存関係は、サポートからAnroidXに変更されます)
Android Studioドキュメントから( https://developer.Android.com/studio/preview/features/ ):
Android Gradleプラグインは、gradle.propertiesファイルで設定できる次のグローバルフラグを提供します。
- Android.useAndroidX:trueに設定されている場合、このフラグは、今後AndroidXの使用を開始することを示します。フラグが存在しない場合、Android Studioは、フラグがfalseに設定されているかのように動作します。
- Android.enableJetifier:trueに設定されている場合、このフラグは、(Android Gradleプラグインから)ツールをサポートして、既存のサードパーティライブラリがAndroidX用に作成されているかのように自動的に変換することを示します。フラグが存在しない場合、Android Studioは、フラグがfalseに設定されているかのように動作します。
Jetifierの前提条件:
Android Studio 3.2
を使用する必要がありますJetifierを有効にするには、これらの2行をgradle.properties
ファイルに追加します。
Android.useAndroidX=true
Android.enableJetifier=true
最後に、AndroidXのリリースノートを確認してください。jetifier
には一部のライブラリ(例:Dagger Android)でまだ問題があります。 https://developer.Android.com/topic/libraries/support-library/androidx-rn
Android.useAndroidX=true
とAndroid.enableJetifier=true
を手動で追加すると、苦労します。エラーまたはSuggestion: add 'tools:replace="Android:appComponentFactory"' to <application>
がスローされるため
プロジェクトでJet-fireを有効にするには、Android Studioにオプションがあります
プロジェクトを選択--->右クリック
app ---->リファクター----> AndroidXへの移行
下の画像に表示されます:-
をクリックして、AndroidXに移行します。
プロジェクトの確認とバックアップが求められます。
最後のステップでは、リファクタリングを行うように求められます。
リファクタリング後、gradle.propertiesにAndroid.useAndroidX=true
およびAndroid.enableJetifier=true
があることを確認してください。そうでない場合は、次の2行をgradle.propertiesファイルに追加します。
Android.useAndroidX=true
Android.enableJetifier=true
心配する必要はありません
プロジェクトで Jetifier を有効にするだけです。
gradle.properties
を開き、以下の2行を追加します。
Android.enableJetifier=true
Android.useAndroidX=true
実行時に依存関係のすべてのサポートライブラリがAndroidXに変換されます(コンパイル時にエラーが発生する可能性がありますが、アプリは実行されます)。
Manifest.xmlのapplicationタグでこれらの2行のコードを使用し、機能しました。
tools:replace="Android:appComponentFactory" Android:appComponentFactory="whateverString"
ソース: https://github.com/Android/android-ktx/issues/576#issuecomment-437145192