본문 바로가기
프로그래밍 놀이터/안드로이드, Java

[android] AndroidX 로의 migration : 그 때가 왔다! ( from Dev Summit 19 )

by 돼지왕왕돼지 2019. 11. 15.

AndroidX 로의 migration : 그 때가 왔다! ( from Dev Summit 19 )






* AndroidX 가 뭔데


-

androidx 는 set of tool & guide 이다.

목표는 best practice 적용, boiler plate 제거, 어려운 일을 간단히 해서 핵심에 집중할 수 있게 한다.



-

Jetpack, Support lib, AndroidX 의 관계는 어떻게 될까?

AndroidX 는 Jetpack 을 담고 있다. Jetpack 코드의 pgk name 은 androidx 이다.

그리고 Support lib 28 이 AndroidX 1.0 에 들어왔다.





* 왜 Migrate 해야 하지?


-

Support lib 이 28 에서 지원을 멈추고 이제는 AndroidX 에서 제공할 예정이다.

GooglePlay Service, Firebase, Butterknife, Mockoto2 등도 AndroidX 에 들어왔다.

그리고 새로운 lib 들도 다 androidX 로 출시 예정이다.





* Migration 과정


-

backup 먼저 해라.

그리고 migration 은 branch 를 만들고 진행해라.



-

1. Support Lib 을 28로 업데이트 해라.

    26, 27, 28 사이의 변화를 먼저 적용해야 한다.

    AndroidX 1.0 과 Support Lib 28 은 동일하다. 오직 namespace 만 다르다.



-

2. Enable Jetifier

    Jetifier 는 3rd party dependency 가 AndroidX 코드를 사용하도록 해준다.

    이것이 source code 나 generated code 를 바꾸거나 하진 않는다.

    (돼왕 : jar, aar로 배포되는 라이브러리 내의 바이트코드를 빌드 타임에 AndroidX에 대응되도록 변환하면 jetified-xxxx.aar 등이 생성된다.    )

    

    gradle.properties 에 아래것들을 넣어준다.

android.useAndroidX=true // import 시 old support verison 대신 androidX 것을 우선 import 하도록 한다.
android.enableJetifier=true


-

3. Dependency update

    순서대로 하나씩 바꿔본다.

    Code generation lib 의 경우는 AndroidX 의 영향을 받지 않기 때문에, 그들이 AndroidX 와 compatable 한지는 알아서 살펴봐야 한다.

    이를 잘 확인하지 않으면, AndroidX not compatible 또는 duplicate class 관련 compile error 가 날 것이다.



-

4-1. Android Studio 를 이용해서 migration 하자.

    v.3.2 부터 가능하다.

    [Refactor] menu 에 [Migrate to AndroidX] 메뉴가 있다.



-

4-2. Bash script 를 이용해서 migration 하자.

    Stuido 가 3.2 이상 버전이 아니라면, Bash script 를 써서 lib pkg 를 모두 androidX 것으로 바꿀 수 있다.

    https://goo.gle/androidx-migration-script



-

4-3. 손으로 직접 할 수도 있다.

    ref doc 의 mapping 정보를 보고 손으로 직접 할 수도 있다.



-

5. Done





* Issue 들을 보자


-

builde.gradle 에서 version 을 variable 로 뽑아냈던 경우

old support -> androidx 로 전환할 때 동일 format 을 유지하지 않는다.

따라서 수동으로 버전영역을 다시 관리하도록 수정해야 한다.



-

build script, proguard file, config file 등은 

자동으로 바꾸지 못한다.

이외에도 자동으로 변경되지 않는 기타 파일들이 있다는 걸 인정해야 한다.



-

자동으로 바뀐 dependency 가 alpha ver 를 가르킬 수 있으니 꼭 확인하자.




댓글0