알아요, 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=true
및 android.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
답변
답변
이 두 줄의 코드를 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’으로 다운 그레이드하여 문제를 해결했습니다.