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


96

알아요, 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"
    }

답변:


132

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


내 프로젝트는 여러 라이브러리를 사용하며 일부는 지원 라이브러리를 사용하고 일부는 androidx를 사용합니다. 내 프로젝트에서 두 라이브러리를 어떻게 사용합니까?
Hiren Dabhi

1
@hiren dabhi 솔루션 제안이 작동하지 않는 경우 설정에 대한 새 질문을 만들 수 있습니까? 설정에 대한 자세한 내용을 모르면 답을 찾기가 다소 어렵습니다.
Christopher

57

수동으로 추가 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 이상이있는 경우이 옵션이 작동합니다. 이것을 확인 하십시오


1
좋은 제안이지만 Android Studio를 사용하여 업그레이드하는 사람들을위한 참고 사항 일뿐입니다.이 옵션은 Android Studio 3.2 이상이있는 경우 작동합니다. 이 확인 developer.android.com/jetpack/androidx/migrate
AB

21

걱정할 필요 없어

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

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

    android.enableJetifier=true
    android.useAndroidX=true
    

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


3
내 파일에서 gradle.properties를 찾을 수 없습니다. 직접 생성했습니다.
FindOutIslamNow

실제로 전이 종속성 + gradle 캐시가 작동하지 않을 수 있습니다. android.enableJetifier=true이 경우 에도 수동으로 jetifier-standalone타사 aar를 사용하는 것이 작동 할 수 있습니다.
mochadwi


1

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

SDK 설정

이것은 잘 작동합니다.



0

프로젝트가 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'으로 다운 그레이드하여 문제를 해결했습니다.


0

이전에 이와 같은 문제가 있었는데 gradle.properties 파일이 존재하지 않고 gradle.properties.txt 만 존재했기 때문에 프로젝트 폴더로 이동하여 gradle.properties.txt 파일을 복사하여 붙여 넣었지만. txt 확장자가 마침내 작동했습니다.


0

gradle.properties 파일에 두 줄 아래에 추가했습니다.

android.useAndroidX=true
android.enableJetifier=true

그런 다음 다음 오류가 발생했습니다.

error: package android.support.v7.app does not exist
import android.support.v7.app.AlertDialog;
                         ^
                         

수입품을 제거하고 아래에 추가했습니다.

import static android.app.AlertDialog.*;

그리고 AppCompactActivity에서 확장 된 클래스는 아래 줄을 추가했습니다. (이러한 오류의 경우 올바른 라이브러리를 가져 오는 android studio에서 alt + enter를 눌러야합니다. 이렇게하면 모든 오류를 해결할 수 있습니다.)

import androidx.appcompat.app.AppCompatActivity;

xml 파일에서

<android.support.v7.widget.Toolbar 

그것을 대체 androidx.appcompat.widget.Toolbar

그런 다음 자바 코드에서

import androidx.appcompat.widget.Toolbar;

-1

이 줄에 주석 달기 gradle.properties

android.useAndroidX = true


OP는 Android 지원에서 AndroidX를 사용할 수 있는지 묻습니다. AndroidX 사용 중지 제안
Raildex

gradle.properties 및 의견으로 이동
Vibhu Vikram Singh
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.