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 를 가르킬 수 있으니 꼭 확인하자.
'프로그래밍 놀이터 > 안드로이드, Java' 카테고리의 다른 글
[android] Notification Channel ( Oreo 부터 생김 ) (0) | 2020.02.26 |
---|---|
[android] 성능에 대한 미신들을 때려잡자! ( from Dev Summit 2019 ) (0) | 2019.11.16 |
[android] Coding in Style: Static Analysis with Custom Lint Rules ( from Dev Summit 19 ) (0) | 2019.11.14 |
[android] Pie (android 9) 의 변경점 (0) | 2019.07.31 |
[android] Pie 에서 앱 잘 작동하는지 확인하기 (0) | 2019.07.30 |
댓글