윦위키
뭐든지 위키

안드로이드 개발

안드로이드 개발은 아직 쌩 Java로도 많이 합니다. 요즘은 Kotlin이 좀 뜨고 있고 cross platform 으로는 cordova나 react-native, xamarin, unity 정도가 있습니다. 여타 웹뷰기반 플랫폼이나 Nativescript, Weex같은것도 있지만 완성도가 떨어져 대여섯개라고 볼수 있습니다.

개발툴
거의 네이티브는 android studio로 합니다. js를 사용하는 놈들은 vscode나 atom으로 정리됐고요. c#은 mac도 (구리지만) visualstudio for mac이 나와서 그냥 visualstudio를 씁니다.
에뮬레이터
android emulator가 너무 구려서 예전엔 genymotion 같은것을 썼는데 요즘엔 성능이 좋아져서 다른건 별로 안쓰고 그냥 android studio에 붙어있는 놈을 많이 쓰는것 같습니다.

1   Java

더이상의 설명은 필요하지 않음

2   Kotlin

https://kotlinlang.org/

그 유명한 android studio의 IDE플랫폼을 만든(원래는 netbeans platform이라 만들었다기 보다는 개조한) Jetbrain에서 만든 원래는 안드로이드 개발용 언어입니다. 당연히 IDE제조사가 만들었으니 IDE지원이 훌륭하고 여러 모던한 코딩기법이 들어가 있는 언어라 요즘에 채택하고 있는 회사도 많은듯 합니다. 뭐 서버개발이나 다른 플랫폼으로 이식될 가능성도 있겠죠.

3   Cordova

https://cordova.apache.org/

Phonegap을 아파치 프로젝트에 넣어서 이름을 바꾼 플랫폼입니다. 네이티브에 웹뷰를 띄우고 그 안에서 javascript로 앱을 작성하는 방법입니다. 대표적으로 Ionic이 있고 Angular를 주로 이용합니다. Ionic이 아니어도 그냥 원하는 자바스크립트 App을 만든 후 cordova로 엮으면 모바일 앱이 됩니다. 당연히 웹뷰이니 크로스 플랫폼이 가능하며 애초에 Phonegap자체가 iphone등의 여러 플랫폼을 동시에 지원하기 위해서 만들어진 것입니다. UI빡센 App이 아니라면 뚝딱만들어서 올리기가 제일 좋았고요. 웹뷰에서 모바일 센서니 카메라니 하는 네이티브 기능을 연결해서 쓸 수 있습니다. Onsenui나 Framework7등의 아류가 있으나 네비게이션등의 완성도가 떨어집니다. ReactNative의 약진으로 인기를 잃어가고 있는데 뭐 아직도 만들어진 앱이 좀 있어서 간간히 보이기는 합니다만 RN으로 옮기는게 그리 어렵지 않아서 다들 옮겨가는 추세인듯 합니다.

4   ReactNative

https://facebook.github.io/react-native/

Phonegap이 웹뷰를 이용하는 것이라면 ReactNative는 Html스러운(?) markup을 작성하여 네이티브의 정의되어 있는 요소를 이용해 화면을 그려냅니다. (문장이 너무 길어지는군요) 네이티브를 이용하는 것이니 Cordova보다 렌더링이 훨씬 빠르고 부드러우며 어차피 깊게 들어가면 네이티브 개발을 어느정도는 알아야한다는 부담이 있습니다.(Cordova도 뭐 별로 다르진 않습니다만) UI요소가 아니면서 그리 빡세지 않은 작업들은 JS를 이용하여 코드를 작성할수 있다는 장점이 있습니다. 현재 프론트엔드 기술중에 제일 핫한 react를 쓰니 생태계가 어마어마 합니다. 별것도 아닌 기술에 이름을 죄다 붙여놔서 생태계 파악에 시간이 좀 걸린다는 단점이 있습니다. Weex나 Nativescript등의 아류가 있으나 돌아가는게 아직 거지같아서 실제로 많이 쓰이지는 않습니다.

5   Xamarin

https://visualstudio.microsoft.com/ko/xamarin/

Microsoft가 인수해서 visualstudio에 넣고 (부분유료였던) 개발 플랫폼 자체를 무료로 풀어버렸습니다. C#으로 네이티브에 한땀한땀 연결해놓는 구성은 ReactNative와 비슷합니다. 장점은 C#을 하던 개발자는 조금만 공부해도 금방 만들어낼수 있다는것정도가 되겠습니다. 마소 인수후 반짝 했는데 반짝할 그 시기에 ReactNative가 폭발적으로 성장해 현재는 별로 인기가 없는듯 합니다.

리모릭스 개발 이야기

6   Unity

https://unity3d.com/

(현재는) 게임 개발 플랫폼입니다. 일반 비지니스 앱을 만들려면 well defined components(list, card, navigation, link등등) 가 없으니까 한땀한땀 제작해서라도 사용할수 있긴 하겠습니다. 특수목적의 게임과 비슷한 빡센 UI를 가진 앱을 만들때에는 좋을수도 있겠습니다. 사용자체가 유료입니다.

7   Q&A

이 중에서 제일 네이티브에 가까운 것은 Java인가요? 그리고 지금 구글이 밀고 있는 기술은 어떤건가요? 예전에 구글에서 새로운 안드로이드 개발용 언어를 개발했다는 소식을 들은 기억이 있어서요. 아 그리고 각 기술의 메인 URL을 알고 계시면 좀 추가해 주세요. ;) – hcho 2018-10-14

결과물 기준으로 본다면 Java, Kotlin이 네이티브라고 할수 있을것 같습니다. 구글에서 Java이외에 Kotlin을 공식언어로 추가했다고 들었습니다. 들어보신것 같은 구글에서 만든 언어는 아마 Dart나 Golang같은 것일텐데 그냥 그 기술을 주로 사용하는 Enduser들의 바램인 상태고 좀 거리가 멀다라고 조심스럽게 생각해 볼수 있겠습니다. Dart는 그냥 말그대로 망했고요. Golang은 docker를 위시한 여러 쓸모있는 프로그램들이 만들어지고 있지만 클라이언트 개발과는 아직 거리가 멉니다 – uskusi 2018-10-14
그렇다면 Kotlin이었습니다. 자기들이 만든게 아니었군요. 네이티브로 가고 싶다 그러면 어떤 걸 추천하시나요? 그 이유는요? – hcho 2018-10-14

모바일에서 들여쓰기가 불편하니 이렇게 다시 쓰는게 좋겠습니다. 제 생각엔 언어가 중요하다기 보다는 플랫폼에 익숙해지는게 더 중요할것 같습니다. 자바가 반이고 플랫폼이 반인듯 합니다. 안드로이드 빌드를 요즘엔 gradle로 하니 제대로 하려면 groovy에도 좀 익숙해지는게 좋고요. 자바로 안드로이드 개발을 잘 할수 있다면 다른언어로 뭘 하는것도 쉬울거라고 생각이 드네요 Kotlin은 그냥 언어자체도 배울가치가 있는것 같습니다 js에 익숙하다면 ReactNative도 괜찮은 선택이고 아이오닉 자마린등은 사양추세인듯 합니다.

Android 개발을 수주해서 Kotlin을 제대로 써봤더니 최고였다.

uskusi 2018-10-15

그렇군요. 다시 안드로이드 개발을 들여다 보고 싶어집니다. – hcho 2018-10-14

MS는 자마린을 인수해 놓고 윈폰 사업을 접다니 무슨 생각 일까요. 잘 만들어서 ios, android랑 경쟁해 주길 바랐는데 아쉬워요. 아직 경험은 없지만 저는 향후 안드로이드 개발을 한다면 Kotlin을 배울 생각이에요. Kotilin은 Jetbrain 에서 만들었죠. android studio 또한 Jetbrain의 Intellij 기반으로 만들었기때문에 통합이 잘 되어 있지 않을까하는 막연한 기대감이 있어요; 무엇보다 elipse로 Java 개발을 하다가 Intellij로 넘어오면서 아주 만족해서 신뢰가 쌓인 상태! 장황한 느낌의 java 보다는 swift 처럼 간결한 kotlin이 좋아보여요. 그리고 uskusi 님 말씀처럼 언어보다는 플랫폼과 API의 비중이 더 큰 것 같아요. ReactNative 개발은 순조로운 편인가요? 많은 노력을 들인건 아니지만 크로스 플랫폼의 유혹 때문에 자마린을 시도 했다가 적응을 못하고 다시 네이티브(swit)로 왔어요ㅠ – snailoff 2018-10-18

대세는 Kotlin이군요. 리눅스에서도 다 돌아가겠지요? – hcho 2018-10-17
요즘은 크로스플랫폼이 안되면 외면 받는거 같습니다. android studio등 intellij 계열이 리눅스에서도 잘 돌고요 kotlin 으로도 안드로이드 개발하는데에 부족함이 없어요 다만 개발자들이 아이폰까지 같이 보는 경우 때문에 맥이 좀더 선호 되는거겠죠 – uskusi 2018-10-18
reactnative는 주로 자바스크립트를 쓰니까 웹을 오래 하신 분들은 금방 적응할수 있다는게 장점이지 않을까 싶네요 개발 처음 하는 친구도 금방 따라오는걸 보면 개발은 순조로운 것 같고요 개인적으로 자마린같은 병맛이 느껴지지 않아요 ㅋㅋ – uskusi 2018-10-18

MS는 주류로 경쟁하기 보다는 플랫폼이나 생태계로 승부를 보려고 하는것 같습니다 벌써 github인수나 react등 오픈소스쪽에 참여하는 움직임을 보면 범상치는 않고요 vscode는 ide의 명가답게 이미 오픈소스 ide를 평정한 느낌입니다. 역시 하드웨어는 체질에 안맞나봐요 – uskusi 2018-10-18