Androidx 프로젝트에서 Android 지원을 사용한 라이브러리를 사용할 수 있습니까?

알아요, androidx 및 multidex 오류를 일으키는 지원 종속성
우리는 androidx 및 android 지원을 동시에 사용할 수 없습니다. 그래서 나는 완전히 androidx로 마이그레이션합니다. 하지만 내 의존성 라이브러리 중 하나는 안드로이드 지원 “lottie”를 사용했습니다.

위 상황에서 우리는 무엇을 할 수 있습니까? 내 프로젝트에서 ‘lottie’를 제거해야합니다.

아래는 내 gradle입니다.

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 종속성은 Support에서 AnroidX로 변경됩니다)

Android Studio 문서 ( https://developer.android.com/studio/preview/features/ )에서 :

Android Gradle 플러그인은 gradle.properties 파일에서 설정할 수있는 다음 전역 플래그를 제공합니다.

  • android.useAndroidX : true로 설정하면이 플래그는 지금부터 AndroidX 사용을 시작할 것임을 나타냅니다. 플래그가 없으면 Android Studio는 플래그가 false로 설정된 것처럼 작동합니다.
  • android.enableJetifier : true로 설정되면이 플래그는 기존 타사 라이브러리를 AndroidX 용으로 작성된 것처럼 자동으로 변환하기 위해 도구 지원 (Android Gradle 플러그인에서)을 원함을 나타냅니다. 플래그가 없으면 Android Studio는 플래그가 false로 설정된 것처럼 작동합니다.

Jetifier의 전제 조건 :

  • 당신은 적어도 사용해야합니다 Android Studio 3.2

jetifier를 활성화하려면 다음 두 줄을 gradle.properties파일에 추가하세요 .

android.useAndroidX=true
android.enableJetifier=true

마지막으로 jetifier일부 라이브러리 (예 : Dagger Android)에 여전히 문제가 있으므로 AndroidX의 릴리스 노트를 확인하십시오 . 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에 옵션이 있습니다.

프로젝트 선택 —> 오른쪽 클릭

앱 —-> 리팩터링 —-> AndroidX로 마이그레이션

아래 이미지에 표시 :-

여기에 이미지 설명 입력

Migrate to AndroidX를 클릭 한 후 .

프로젝트에 대한 확인 및 백업을 요청합니다.

여기에 이미지 설명 입력

마지막 단계에서는 리팩터링을 요청합니다.

여기에 이미지 설명 입력

리팩터링을 수행 한 후 gradle.properties에 android.useAndroidX=trueandroid.enableJetifier=true. 그렇지 않은 경우 다음 두 줄을 gradle.properties 파일에 추가합니다.

android.useAndroidX=true
android.enableJetifier=true

참고 :-Android Studio를 사용하여 업그레이드하면 Android Studio 3.2 이상이있는 경우이 옵션이 작동합니다. 이것을 확인 하십시오


답변

걱정할 필요 없어

프로젝트 에서 Jetifier 를 활성화 하기 만하면됩니다.

  • Android Studio 를 3.2.0 이상으로 업데이트합니다 .
  • gradle.properties두 줄 아래에 열고 추가하십시오.

    android.enableJetifier=true
    android.useAndroidX=true
    

런타임에 종속성의 모든 지원 라이브러리를 AndroidX로 변환합니다 (컴파일 시간 오류가있을 수 있지만 앱이 실행 됨).


답변

gradle.properties 파일에 줄 추가

android.useAndroidX=true
android.enableJetifier=true

여기에 이미지 설명 입력
여기에 이미지 설명 입력https://developer.android.com/jetpack/androidx

참조하십시오.


답변

API 29. + 사용 AndroidX 라이브러리. API 29. +를 사용하는 경우이를 제거 할 수 없습니다. AndroidX를 제거하려면 SDK에서 전체 29. + API를 제거해야합니다.

SDK 설정

이것은 잘 작동합니다.


답변

이 두 줄의 코드를 manifest.xml의 애플리케이션 태그에 사용했고 제대로 작동했습니다.

 tools:replace="android:appComponentFactory"
 android:appComponentFactory="whateverString"

출처 : https://github.com/android/android-ktx/issues/576#issuecomment-437145192


답변

프로젝트가 AndroidX (평균 Appcompat)가 아니고이 오류가 발생하면이 오류를 유발하는 종속성 버전을 다운 그레이드하십시오. 제 경우에는 play-services-location ( “implementation ‘com.google.android.gms : play-services-location : 17.0.0 ‘ “), com.google.android.gms : play-services-location : 16.0.0’으로 다운 그레이드하여 문제를 해결했습니다.