안드로이드가 처음 나왔을때의 개발환경은 이클립스라는 IDE와 Ant 빌드 시스템을 이용하도록 되어있었다.
(필자는 안드로이드 스튜디오의 Gradle을 접하기 전까지는 Ant가 뭔지도 모르고 관심도 없었다. 이클립스가 다 알아서 했었으니까)
이클립스는 무료 JAVA IDE툴이며, 초창기에는 느린 속도때문에 사용성에 문제가 많았으나, 하드웨어의 발전속도가 원체 빠르다보니 JAVA개발하는데 큰 무리가 없을 정도로 (하드웨어가) 발전했다.
안드로이드의 기본 언어는 JAVA였으므로 그에따라 IDE는 자연스레 이클립스가 선택되었고, 빌드 시스템은 Ant가 되었다. 당시 전세계에 가장 많은 개발자가 사용하는 언어가 JAVA여서 안드로이드의 기본언어를 JAVA로 정했다는 소문도 많았다. 그래서 iOS는 반응이 빠릿빠릿한데 안드로이드는 JVM을 거치기 때문에 느린것이라고...
Ant는 XML로 프로젝트의 디벤던시를 관리하는 빌드 시스템이다. 특징을 들자면 정적인 데이터로 관리하기때문에 스크립트처럼 프로그램화 할 수 없다. 이클립스는 안드로이드 프로젝트에서 이 XML을 자동으로 만들어주었기때문에 신경 쓸 일이 없었다. 존재조차 모르는 사람도 많았다 (필자도..)
(Gradle 에대한 설명글이기때문에 이클립스와 Ant관련 내용은 여기까지..)
그렇다면 안드로이드 스튜디오가 나온 시점엔 무엇이 바뀌었는가?
안드로이드 스튜디오는 인텔리제이 기반의 IDE툴이며, 인텔리제이는 자바뿐 아니라 다양한 언어를 지원하고 유료 툴이다. 안드로이드 개발에 사용하는 안드로이드 스튜디오는 인텔리제이를 베이스로 안드로이드 개발에 필요한 기능들을 추가하여 나온 IDE툴이고 무료이다.
처음 안드로이드 스튜디오를 접한 사람은 새로 만드는 프로젝트의 폴더 구조를 보고 지레 겁을 먹고 (혹은 필자처럼 공부하기 귀챤아서) 존버가능할때까지 이클립스로 존버하다가 더이상 이클립스로 안드로이드 기술 서포트가 끊긴 시점에 안드로이드 스튜디오러 넘어온 사람들이 많다 ( 나 역시.. )
막상 안드로이드 스튜디오로 넘어오니 단축키도 다시 알아야 되고 툴 사용법에도 익숙해져야되는데 보통 이클립스에서 안드로이드 스튜이오로 완벽하게 넘어오는데 3개월정도 걸린다.
(완전히 넘어와보니... 안드로이드 스튜디오 버젼 업할때마다 자꾸 판을 뒤집으니 속이 뒤집힌다 )
안드로이드 스튜디오, 아니, 인텔리제이는 인생 템인것 같다. 왜 인텔리라는 접두어가 붙었는지는 툴을 쓰면 쓸수록 체감된다. 툴 자체가 무겁다보니 이클립스를 쓰다 넘어오면 개발자 PC 리소스 점유때문에 짜증나고, 유난히 윈도우와는 궁합이 안맞아서 프로젝트 규모가 커질수로 프로젝트 띄우고 빌드 거는데만 시간이 많이 걸리는건 지금도 불만이긴 하나, 개발 진행간 벌어지는 자동 서포트(?)는 손가락과 손목의 피로도를 상당히 줄여주며, 개발자는 설계와 서비스에 집중할 수 있게 해준다. 구글이 인텔리제이를 안드로이드 개발용 IDE로 선택한거은 신의 한수이다.
그러하면 Gradle은 어떤가? Ant때는 빌드 시스템 자체를 몰라도 안드로이드 개발자로 먹고사는데 지장이 없었다. 그런데 Gradle이 사용되면서 groovy라는 언어(?)를 사용해서 스크립트를 만들어서 빌드시스템을 만들고, 고객사별, 혹은 상품별 빌드 산출물을 분리하고, 유료, 무료에 따른 산출물을 관리하는등 다양한 산출물 관리와 디펜던시 관리를 동적으로 할 수 있게 되었다.
서드파티 라이브러리를 사용할때 이클립스시절에는 jar파일 다운받아와서 빌드 세팅만 바꾸면 끝이었는데 Gradle은 디펜던시에 내용을 추가해야한다. 이게 또 사람 잡는게 gradle? gradlewrapper? 버젼이 올라가면서 자꾸 바뀐다.
구글이 어느정도 안드로이드 개발자를 노예(?)로 모았다고 판단했는지 어느순간부터는 "우리가 이렇게 정했으니 따라오던가 뒤쳐지던다 해" 라고 외치면서 "우리가 이번에 이렇게 좋은 설계랑 기능을 가져왔어. 쓰던가 뒤쳐지던가 해" 라고 외치고 있다. 그러더니 최근에는 "지난번 우리가 알려준거보다 더 좋은게 나왔어 더 좋은거 쓰던가 뒤쳐지던가 해" 라고 말하고 있다.
나는 이러한 구글의 태도는 상당히 거슬린다. 못따라가면 뒤쳐지는 상황이다보니 필사적으로 google i/o를 보면서 실 사용은 안하더라도 내용은 알고 있어야 된다. 금융사, 카드사, 핀테크, 서비스앱 등 고객사에 나가서 코드 리뷰를 해보면 똑같은 플랫폼(안드로이드) 가 맞나 싶을정도로 제각각 자기들만의 왕국인지. 설계가 다 다르고 패턴도 다 다르고 똑같은거 찾아보기가 힘들 정도이다. (개인적으론 이런상황이다보니 코드 보는 눈과 분석 능력은 원치않게 높아졌다)
그나마 최근에 나온 AAC 에서 어느정도 표준 설계안을 제시한것 같으며 (이것도 세세하게 자꾸바뀌는중) 개인적으로 이부분은 맘에 들어 하고 있다.
이야기가 갑자기 구글 판으로 잠깐 새어버렸는데,
갑자기(?) 결론을 말하자면 안드로이드 스튜디오는 윈도우에서는 참... 쓰기 힘들고( 성능좋은 컴퓨터는 쓰다보면 점점 느려지는 마법에 걸리고 주기적으로 재 설치를 하거나 포맷을 하면 좋아짐 ) 맥에서는 i7 에 16기가램, 512SSD정도면 원활하게 사용 가능하다. 필자역시 맥북의 동일 사양을 사용중이다.
Gradle은 groovy를 제대로 공부한적은 없으나 필요할때마다 구글링해서 활용중이고, 이를 잘 활용하면 분명한 이점이 있다. 특히 산출물 관리와 코드상에서 분기를 해주는것과의 연계는 필자입장에서는 "오~ 이런것도 되네" 라는 느낌이 들면서 과거 임베디드 개발로 먹고살때 c언어의 #ifdef #else #endif 를 사용하던 기분도 살짝 든다.
'프로그래밍 > 안드로이드' 카테고리의 다른 글
로더 (LoaderManager) (0) | 2018.11.13 |
---|---|
안드로이드 gradle ( dependencies 설정 ) (0) | 2018.11.13 |
Android LifeCycle (0) | 2018.11.13 |
Log 종류별 용도 (0) | 2018.11.13 |