Jetifier는 무엇입니까?


97

Jetifier는 무엇입니까? 예를 들어 androidx 패키지 종속성을 사용하여 새 프로젝트를 만들려면이 새 프로젝트에서 gradle.properties 파일에 다음 줄을 추가해야 합니다.

android.enableJetifier=true

"제티 파이어 사용"이란 무슨 뜻입니까?


29
IIRC, Jetifier는 AndroidX 라이브러리를 사용하기 위해 전 이적 종속성을 자동으로 변환하도록되어있는 문서화되지 않은 Googly 기술입니다. 예를 들어, 당신이 가지고 있다고 가정 implementation "com.commonsware.cwac:document:0.3.0"당신에 dependencies. 해당 라이브러리 버전은 com.android.support:support-annotations:27.0.2. 그러나 androidx.annotation:annotation다른 AndroidX 종속성 사용의 일부로 사용하고 싶습니다 . Jetifier 어떻게 든 업데이트하는 것 com.commonsware.cwac:document사용 androidx.annotation:annotation.
CommonsWare

답변:


68

올해 Google I / O (18), Google은 개발자의 삶을 편하게 해주는 라이브러리 세트 / 컬렉션 인 Jetpack을 발표했습니다.

Jetpack에는 이전에 도입 된 Android 아키텍처 구성 요소 (ViewModel, Room, Paging, LiveData 등)와 새로 도입 된 WorkManager, Navigation과 같은 아키텍처 구성 요소가 포함되어 있습니다. 이 Jetpack 외에도 AndroidX, AndroidKTX 등과 같은 다른 라이브러리 세트도 있습니다.

AndroidX는 지원, 데이터 바인딩, 디자인 등과 같은 Android 지원 라이브러리를위한 새로운 패키지 구조입니다.

예를 들어 이제 와드 개발자는 androidx.databinding 을 사용 합니다. android.databinding 대신 . 프로젝트에서 라이브러리를 가져 오는 동안

이를 통해 Google은 라이브러리 패키지에 SemVer 또는 Semantic Versioning 을 추가 할 수 있습니다 . 개발자의 경우 이는 모든 지원 라이브러리에 대해 동일한 지원 라이브러리 버전을 사용할 필요가 없음을 의미합니다. 모든 지원 또는 더 나은 AndroidX 라이브러리는 자체 버전 관리를 유지합니다.

개발자를위한 또 다른 이점은 프로젝트의 모든 지원 라이브러리에 대해 동일한 버전을 유지하는 데 신경 쓸 필요가 없다는 것입니다.

Jetifier에 대해서는 빌드시 모든 종속성 지원 패키지를 변환합니다. Jetifier의 공식 문서에 따라

Jetifier 도구는 대신 동등한 AndroidX 패키지에 의존하도록 지원 라이브러리 종속 라이브러리를 마이그레이션합니다. 이 도구를 사용하면 Android Studio와 함께 번들로 제공되는 Android Gradle 플러그인을 사용하는 대신 개별 라이브러리를 직접 마이그레이션 할 수 있습니다.

프로젝트에서 AndroidX를 사용하려면 프로젝트의 targetSdkVersion을 28 로 설정 하고 gradle.properties 파일 에 다음 두 줄을 추가 해야 합니다.

android.useAndroidX=true

android.enableJetifier=true

이것이 귀하의 질문에 대답하기를 바랍니다.

편집하다

이 링크 에는 AndroidX 카운터 부분과 모든 지원 라이브러리 구성 요소의 매핑이 있습니다.

AndroidX에 대한 자세한 설명은 블로그 를 참조하십시오.


34
"Jetifier 란 무엇입니까?"라는 질문에 실제로 대답하는 것이 아니라 AndroidX와 Jetpack에 대해서만 설명합니다.
David Miguel

2
@DavidMiguel 나는 그것이 의미하는 것이 무엇인지 묻는 주요 질문에 대한 답변을 제공했습니다- "제트기 활성화"?. 내 답변이 부분적이라고 생각하면 그에 따라 답변을 업데이트하겠습니다.
silwar

72

에 익숙하다고 가정합니다 AndroidX. 그렇지 않은 경우 @ 이 게시물을 참조하십시오 .

Jetifiersupport libraries모든 종속성을 AndroidX자동으로 변환 합니다.이 값을 설정하지 않으면 true프로젝트에 지원 ( 28.0.0 버전 이후 더 이상 사용되지 않음 )과 중복되는 AndroidX 패키지가 모두 포함됩니다.

예를 들어

당신이 PhotoView.java의존하는 경우. 지원 라이브러리를 사용합니다 AppCompatImageView.

import android.support.v7.widget.AppCompatImageView;

이 클래스는 이제 androidx패키지 로 이동 되었으므로 어떻게 PhotoViewandroidx 를 얻을 수 있습니까 AppCompatImageView? 그리고 앱은 여전히 ​​기기에서 실행됩니다.

누가 이걸 냈어?

Jetifier 는 빌드시 모든 종속성 지원 패키지를 변환합니다.

Jetifier는 프로젝트를 빌드하는 동안 로 변환 android.support.v7.widget.AppCompatImageView됩니다 androidx.appcompat.widget.AppCompatImageView.

결론

Jetifier를 활성화하는 것은 지원 라이브러리 에서 AndroidX 로 마이그레이션 할 때 중요합니다 .

AndroidX에 대한 자세한 내용은 이 게시물 을 참조하십시오 .

정보

종속성 클래스를 사용하는 동안 Jetifier를 활성화 한 후 코드에 컴파일 시간 오류가 표시 될 수 있습니다. 어떤 당신은 삭제하여 제거 할 수 있습니다 .idea, .gradle재 동기화 프로젝트.

image2

image1


10
.idea / libraries를 삭제하고 Gradle을 다시 동기화하여 컴파일 시간 오류를 제거 할 수 있습니다.
Clo Knibbe

1
Jetifier는 여기에 언급 된대로 런타임이 아닌 빌드 시간에 작동한다고 생각합니다. gradle에서 android.enableJetifier = true를 사용하거나 독립형 jetifier 도구 developer.android.com/studio/command-line/jetifier 를 사용하여 androidx 로 마이그레이션 할 수 있습니다. 이 두 옵션 모두 빌드시 패키지 이름을 대체하므로 이전 지원 라이브러리는 패키지의 일부가 아닙니다.
Nishanth

6

Jetifier 는 Android 프로젝트를 AndroidX 로 마이그레이션하는 데 도움이됩니다 .

Jetifier 는 AndroidX 프로젝트와 호환되는 타사 라이브러리 를 만드는 데 도움이됩니다 .

Android 프로젝트에서 타사 라이브러리를 사용하지 않는 경우 Jetifier는 AndroidX로 이전하는 경우 프로젝트와 호환되는 '타사 라이브러리 만들기'에만 도움이되므로 Jetifier를 사용할 필요가 없습니다. 따라서 프로젝트에서 Jetifier를 사용하도록하려면 gradle.properties에 아래 코드를 작성 합니다.

android.enableJetifier=true
android.useAndroidX=true

AndroidX로 마이그레이션하지 않고 Android 라이브러리를 사용하는 이전 방법 (예 : com.android.support ) 을 사용 하지 않는 경우 이러한 타사 라이브러리가 이전 방법과 이미 호환되므로 이러한 타사 라이브러리를 호환 할 필요가 없습니다. Android 라이브러리 사용. 이 경우 Jetifier를 사용할 필요가 없으므로 이제 위에 주어진 줄을 쓸 필요가 없거나 다음과 같이 간단히 작성하여 androidx로 이동하기 위해 값을 변경할 수 있습니다.

android.enableJetifier=false
android.useAndroidX=false

4

제트기

jetifier은 자동으로 마이그레이션하는 편리한 도구입니다 dependencies에를 AndroidX빌드시에. 그것이 없으면 마이그레이션하기 전에 AndroidX 버전을 사용하는 데 사용하는 모든 종속성이 필요하며 이는 당분간 발생하지 않을 것입니다.

주의해야 할 중요한 제한 사항이 있습니다. jetifier는 패키지 된 아티팩트에서만 작동합니다. 직접 업데이트해야하는 소스 코드에서는 작동하지 않습니다.

AndroidX를 활성화하려면 gradle.properties파일에 2 개의 플래그를 추가해야 합니다. 첫 번째 플래그는 Android 플러그인에 AndroidX대신 패키지 를 사용하도록 지시 AppCompat하고 두 번째 플래그는 다음을 활성화합니다 Jetifier.

android.useAndroidX=true
android.enableJetifier=true

참조 , 포스트는 AndroidX에 대한 자세한 내용을 이해하기


3

에서 공식 문서

이 플래그가 true로 설정되면 Android 플러그인은 바이너리를 다시 작성하여 AndroidX 종속성을 사용하도록 기존 타사 라이브러리를 자동으로 마이그레이션합니다. 플래그가 지정되지 않은 경우 기본적으로 false입니다.

호환성에 유용합니다. 소비자가 사용 androidX하고 생산자가 support. 예를 들어 프로젝트에서 [예제] 대신 AndroidX사용하는 종속성을 사용하려는 경우support libraryAndroidX


0

이 두 줄을 추가하십시오 android.useAndroidX = true

android.enableJetifier = true

buid.gradle에서 그것은 나를 위해 일했습니다

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