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

[android] D8 이 뭐야?

by 돼지왕 왕돼지 2018. 11. 22.
반응형



android d8, android dx, android r8, android studio version, D8, dex compiler, DX, R8, runtime performance, [android] D8 이 뭐야?

-

D8 이 이제 기본 dex compiler 이다.

(기존에는 DX 라는 녀석이 기본 dex compiler 였다.)

D8 은 더 빠르게 더 작은 .dex 파일을 만들어낸다.

D8 이 만든 dex 는 runtime performance 가 기존의 DX 가 만들어낸 것과 같거나 이상이다.



-

D8 은 Android Studio 3.1 부터 기본 compiler 가 되었다. 

Android Studio 3.0 에서부터 이용할 수 있지만 당시는 optional 이었다.

( Android Studio 3.0 에서는 gradle.propertiesandroid.enablerD8=true 를 넣어줘야 한다.)



-

Android Studio 3.1 이상을 사용하면서 만약 컴파일 이슈가 있다면, gradle.properties 아래것을 명시해주면 된다.

android.enableD8 = false 



-

다음 단계를 통해 DX 를 deprecate 시킬 것이다


1. DX 를 studio 에서 이용할 수는 있고, critical issue 는 수정할 것이지만 새로운 기능이 추가되지 않는다. 6개월의 기간을 두고 서서히 진행할 계획이며, 이 기간에 D8 bug 들이 수정될 것이다. (issue 상태에 따라 6개월에 안 끝날 수 있다.)


2. DX to D8 에 대한 major regression 이 없이 6개월이 지나간다면.. 두번째 단계에 돌입한다.

이 phase 는 1년에 걸쳐 진행되며, 이 기간은 복잡한 project 들이 migration 이 잘 되는지를 보는 기간이다.

이 기간동안 DX 는 사용가능하지만, fully deprecate 로 치부하여 issue 가 나와도 수정하지 않는다.


3. 마지막 phase 는.. Android Studio 에서 DX 가 제거된다.

이 때는 DX 로 compile 하기 위해서는 legacy Android Gradle Plugin version 을 사용해야 한다.



-

Dex compile 은 APK 를 만드는 key step 이다.

이는 .class bytecode 를 .dex bytecode 로 변환하는 과정이다.

그리고 이는 app build 시 이루어지기 때문에 .dex file size, runtime performance 등에 영향을 미친다.



-

D8 다음에는 R8 을 계획하고 있다.

R8 은 Proguard 의 대체품으로, minification 과 optimization 을 책임진다.

R8 은 open source 로 공개되었지만 Android Gradle Plugin 에는 아직 통합되지 않았다.



-
참고 자료




끝!




반응형

댓글