티스토리 뷰

반응형

증분빌드에 대해서 들어보셨나요?

증분
컴퓨터 관련 용어로는 레지스터에 1을 더하는 것, 단위체로 취급되는 경우의 샘플링 단위 등을 의미함. - 네이버 지식백과

 

이번 포스트는 증분빌드를 통한 에러가 발생한 경험을 나누려고 합니다.
Android로 구성된 앱을 AndroidX로 마이그레이션 하면서 kotlin gradle 버전을 1.3.50로 업데이트 하였습니다.
마이그레이션 완료 후 빌드 했을 때 다음과 같은 에러 메시지가 발생하였습니다.

w: [kapt] Incremental annotation processing requested, but support is disabled because the following processors are not incremental: io.realm.processor.RealmProcessor (NON_INCREMENTAL), com.bumptech.glide.annotation.compiler.GlideAnnotationProcessor (NON_INCREMENTAL), butterknife.compiler.ButterKnifeProcessor (NON_INCREMENTAL), android.databinding.annotationprocessor.ProcessDataBinding (NON_INCREMENTAL).

 

 

NON_INCREMENTAL  경구 문구 노출 원인이 무엇일까?

 

문제 발생한 로그를 보면 NON_INCREMENTAL 를 print하고 있는데요. 
INCREMENTAL (증분)
주석처리에 대한 에러 상황입니다.

증분빌드
이전에 빌드된 상태에서 다시 빌드를 시도 시 이전에 빌드한 상태가 최신일 경우 다시 빌드 안하는 빌드를 의미한다. 
효과는 빌드 시간 단축이 있다.

버전 1.3.30부터 kapt는 실험 기능으로 선택적으로 증분 주석 처리를 지원하고 있었고 1.3.50 버전부터는 기본적으로 증분 주석 처리가 되고 있습니다.
AndroidX로 마이그레이션 하면서 Kotlin Gradle 버전을 1.3.50 으로 설정하며 기본적으로 증분 주석 처리를 하는 상황이 됩니다.
그러다 보니 증분 주석처리를 지원 안하는 라이브러리를 강제로 증분 주석처리를 시도하여 경고 메시지를 Print 하게됩니다. 

 

 

해결방법

 

증분 주석 에러를 피하는 방법은 해당 라이브러리의 증분 주석 처리를 비활성화 하는 방법이 있습니다.

증분 주석 처리를 비활성화 하려면 gradle.properties 에서 증분 주석 처리를 false 할 수 있습니다.
증분 주석 처리를 지원 안하는 모든 모듈을 각각 gradle.properties을 생성 후 증분 주석처리를 비활성화 합니다.

증분 주석처리 할 모듈의 이름을 확인 후 libs / <your module name> 각 모듈에 대한 gradle.properties 안에 다음과 같이 선언하여 증분 주석 처리 비활성화 합니다. 
만약 해당 모듈에 대한 gradle.properties 가 없을 시 생성하면 됩니다.

kapt.incremental.apt = false

 

 

관련 링크

 

증분빌드란 무엇인가?

kapt 증분 주석처리 비활성화 방법

증분 주석 처리 경고 대응 방법 - statckoverflow

 

반응형
댓글