web-dev-qa-db-ja.com

AndroidxプロジェクトでAndroidサポートを使用したライブラリを使用できますか。

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"
    }
49
Hitesh-1

プロジェクトでJetifierを有効にできます。これにより、基本的にプロジェクトの依存関係のAndroid Support Library依存関係をAndroidX- onesと交換します。 (例:Lottieの依存関係は、サポートからAnroidXに変更されます)

Android St​​udioドキュメントから( https://developer.Android.com/studio/preview/features/ ):

Android Gradleプラグインは、gradle.propertiesファイルで設定できる次のグローバルフラグを提供します。

  • Android.useAndroidX:trueに設定されている場合、このフラグは、今後AndroidXの使用を開始することを示します。フラグが存在しない場合、Android St​​udioは、フラグがfalseに設定されているかのように動作します。
  • Android.enableJetifier:trueに設定されている場合、このフラグは、(Android Gradleプラグインから)ツールをサポートして、既存のサードパーティライブラリがAndroidX用に作成されているかのように自動的に変換することを示します。フラグが存在しない場合、Android St​​udioは、フラグが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

65
Christopher

Android.useAndroidX=trueAndroid.enableJetifier=trueを手動で追加すると、苦労します。エラーまたはSuggestion: add 'tools:replace="Android:appComponentFactory"' to <application>がスローされるため

プロジェクトでJet-fireを有効にするには、Android St​​udioにオプションがあります

プロジェクトを選択--->右クリック

app ---->リファクター----> AndroidXへの移行

下の画像に表示されます:-

enter image description here

をクリックして、AndroidXに移行します

プロジェクトの確認とバックアップが求められます。

enter image description here

最後のステップでは、リファクタリングを行うように求められます。

enter image description here

リファクタリング後、gradle.propertiesにAndroid.useAndroidX=trueおよびAndroid.enableJetifier=trueがあることを確認してください。そうでない場合は、次の2行をgradle.propertiesファイルに追加します。

Android.useAndroidX=true
Android.enableJetifier=true
26
sushildlh

心配する必要はありません

プロジェクトで Jetifier を有効にするだけです。

  • Android St​​udioを更新 3.2.0以降に。
  • gradle.propertiesを開き、以下の2行を追加します。

    Android.enableJetifier=true
    Android.useAndroidX=true
    

実行時に依存関係のすべてのサポートライブラリがAndroidXに変換されます(コンパイル時にエラーが発生する可能性がありますが、アプリは実行されます)。

10
Khemraj

Manifest.xmlのapplicationタグでこれらの2行のコードを使用し、機能しました。

tools:replace="Android:appComponentFactory"
Android:appComponentFactory="whateverString"

ソース: https://github.com/Android/android-ktx/issues/576#issuecomment-437145192

1
andy mubalama