안드로이드 스튜디오3로 업그레이드를 해주고,

빌드를 돌려보면, 아래와 같이 Gradle Sync Issues를 볼 수 있습니다.

이러한 이슈들은 build.gradle의 Module:app레벨에서 일어나는 이슈들인데요.



자세히 보면 아래와 같이 나와있습니다..

지금 쓰고 있는  configuratoin의 설정은 이제 더이상 쓰지 않고,

2018년도 이후에는 사용할 수 없다고 되어 있네요.


다행이 관련 해서 정보를 얻을 수 있는 링크를 제공해 주고 있네요.

https://developer.android.com/studio/build/gradle-plugin-3-0-0-migration?utm_source=android-studio#new_configurations



5가지나 바뀌었으니 조금 피곤하게 되었네요.

하지만 유심히 보시면, Compile혹은 Compile로 끝나는 키워드들을,

implementation 혹은 api로 교체하라는 것입니다.

implementation으로 교체할지 api로 교체할지만 고민하면 되는 문제이지요.

참고로 testApi나 androidTestApi는 무조건  implementation을 사용하도록 되어 있습니다.

선택의 여지가 없는 상황이지요.


그럼 Compile에서 Api혹은 implementation으로 바꾸면 어떤 변화들이 생기는지 알아보도록 하겠습니다.



1. Compile => Api, Implementation



예전에는 Library를 사용할 때, 위와같은 형식을 사용했었는데요.

그런데 구글님께서 Compile을 implementation과 api로 구분해서 사용하라고 합니다.


그럼 어떤 경우에 implementation을 사용하고, 어떤 경우에 api를 사용해야 할까요?

결론부터 말하면 대부분의 앱과 테스트 모듈은 implementation을 사용하도록 구글문서에는 나와 있습니다.


아래표를 보면서 차이를 알아보도록 하겠습니다.


 implementation 

 

 구글문서에 대부분의 앱과 테스트 모듈이 implementation을 사용하도록 권장하고 있는데요.

 기존의 compile키워드하고 가까운것이 아래의 api키워드라고 한다면,

 implementation키워드는 빌드시에 재컴파일해야하는 프로젝트의 크기를 줄여줄수 있다고 합니다.

 api와는 반대로 라이브러리가 import해서 사용하는 다른 라이브러리에는 접근이 불가능합니다.

 

 api 

 

 다 필요없고 예전에 compile이랑 같은 것이 무엇이냐고 하면,

 api라고 할 수 있습니다.

 라이브러리가 import해서 사용하는 다른 라이브러리에 접근이 가능합니다.



아무래도 implementation 키워드만으로 빌드에 문제가 없다면,

implementation을 이용하여서 빌드 속도를 올리는 도움을 받을 수 있을 것이구요.

제대로 동작하지 않고 api키워드를 사용해야 한다면,

각 라이브러리간의 종속성에 대해 좀 더 이해해보고 잘 사용해야 한다고 계도하는 느낌입니다.



2. 정리


위에서 문제가 되었던 부분들은 모두 compile키워드를 api혹은 implementation 중 어느 하나로 교체해서 사용하라.

그러면 빌드 속도를 더 빠르게 할 수 있다라는 것입니다.


복잡하게 생각하면 라이브러리간 종속성을 따져가며 효율적으로 사용할 문제입니다.

하지만, 프로젝트의 라이브러리 수가 적거나 복잡하지 않는

소규모의 앱 개발자라면,

앱의 실행속도가 아닌 프로젝트의 빌드속도이기 때문에,

api를 사용해도 크게 문제는 되지 않는다고 생각합니다.


우선은 api를 사용해서 빌드에 이상이 없도록 하게해서(2018년 까지만 compile키워드를 사용할 수 있으니까요),

기존 앱이 이상없이 빌드되도록 해주구요.

차후 시간을 가지고 라이브러리의 종속성등을 잘 따져서 implementation키워드를 사용해보는 것은 어떨까합니다.


+ Recent posts