Post

기본에 충실 #4. SVN command line 명령어 모음

Posted on

개발 부서의 규모가 큰 기업의 경우 로컬 분산작업을 선호하지 않고 여전히 GIT보다는 SVN을 많이 활용하게 됩니다. 그런데, 상당수의 개발자들이 주로 GUI 환경에서의 작업경험밖에 없어 콘솔에서의 사용법은 잘 모르는 경우가 많죠. 그래서 자주 쓰이는 기본 명령어들을 골라 정리해 보았습니다.   svn ls SVN경로 SVN레파지터리의 파일 리스트를 보여준다.   svn import 로컬경로 SVN경로 원하는 SVN경로에 현재 디렉토리(프로젝트)를 […]

Post

기본에 충실 #3. 안드로이드 콘솔 작업환경 구성

Posted on

웬만하면 안드로이드는 GUI환경에서 개발하는 것이 생산성 면에서 월등하지만, 앱이 과도하게 많거나 혹은 특정한 사유로 빌드 / 테스트 등의 자동화가 필요할 경우 콘솔 환경에서의 작업이 필요할 때가 있습니다. 그러나 국내 어느 도서나 교재에서도 이러한 것들에 대해 제대로 설명해주지 않습니다. 작년 이맘때쯤, 조금은 무리한 프로젝트들로 인해 안드로이드의 자동화 체계에 대해 상당한 고민이 있었습니다. 물론 메이븐이나 그래들 같은 […]

Post

기본에 충실 #2. 코딩컨벤션 및 명명법 규약 및 소소한 팁

Posted on

안드로이드 프로그램을 개발하는 분들 상당수는 홀로 작업하시는 분들이 많겠지만, 대형 프로젝트이거나 혹은 팀으로 단기 프로젝트를 진행하는 분들은 코드 스타일에 대한 고민이 있을 겁니다.   여럿이 같은 모양의 코드를 만들어내기란 어려운 일이지만, 최대한의 가독성을 살리기 위해서는 자바, 혹은 안드로이드에서 제시하는 표준적인 코드 스타일을 지켜줄 필요가 있습니다.   안드로이드를 처음 배우려는 분들에게 도움이 되길 바라는 마음에서 회사 […]

Post

기본에 충실 #1. 유닉스 명령어와 쉘 스크립트

Posted on

유닉스 명령어와 쉘 스크립트   – 목차(검색어) 서론 기본명령어 와일드카드 순차적용 프로세스 제어 예약 작업 쉘 스크립트 쉘 커스터마이즈 이외에 유용한 명령어     서론 분명 리눅스를 설명하려고 하면서도 제목엔 유닉스라 칭하는 이유는, 어차리 리눅스 명령어는 대부분 유닉스에서도 통하기 때문이다. GNU가 왜 GNU인가? 상용 라이센스를 피해가면서도 완벽히 유닉스와 호환되는 시스템을 만드는 것이 GNU의 존재 이유다. […]

Post

안드로이드란 #8. Android Service Framework

Posted on

Android service framework 먼저 프레임워크라는 용어에 대한 개념적 정리가 필요할 듯 하다. 물론 이 용어는 사람마다 미묘하게 다른 정의를 가지고 있지만 비교적 안드로이드 시스템에 대해서 내가 정의할 수 있는 바가 정확하다고 생각한다. 프레임워크라는 것은 개발자의 입장에서 볼 때 OS의 상위 부분인 어플리케이션 레이어에서 재사용 가능한 코드를 제공하는 부분이다. 즉, 구글에서 제공하는 API를 이용하여 만들던, 혹은 […]

Post

안드로이드란 #7. Android Binder IPC

Posted on

Binder IPC 리눅스에서 프로세스간 데이터를 주고받는 방법으로 IPC를 이용한다. Inter Process Communication의 말 뜻 그대로 내부 프로세스간 소통을 하는 방식을 말한다. 그러나 안드로이드는 zygote와 DVM을 이용하여 가상머신으로 생성된 프로세스끼리 RPC(Remote Process Call. 즉 어떤 프로세스가 다른 프로세스의 함수를 자신의 것처럼 호출할 수 있게 해 주는 내부적 소통방법)를 사용하여야 하고, 그로 인해 기존의 IPC를 이용하기보다는 조금 […]

Post

안드로이드란 #6. Android Service

Posted on

Android Service는 UI없이 background에서 활동하는 component를 말한다. 특히 기존에 application을 제작해 본 경험이 있는 사람이라면 매우 익숙하게 보아 온 개념일 것이다. Service에는 크게 두 가지 종류가 있다. System service와 Application service가 그것이다. Application Service 먼저, application service는 다시 두 가지 종류로 나뉜다. 바로 local service 와 remote service다. local service는 단일 process 안에서 활동하는 service를 […]

Post

안드로이드란 #5. zygote

Posted on

zygote는 안드로이드의 실체다. zygote를 이해하지 못하고서는 결코 안드로이드의 작동원리에 대해 안다고 이야기할 수 없다. 그만큼 중요한 부분이고, 안드로이드라는 OS의 특수성이 모두 이 안에 담겨있다. DVM 또한 zygote의 프로세스 생성 과정에 포함되어 있기 때문에, 안드로이드 가상머신 과정의 모든 것이 바로 zygote 라고 하여도 무방하다. 앞서 JNI와 NDK에 대해 먼저 알아보고 C언어와 JAVA를 넘나드는 방법을 알아본 이유 […]

Post

안드로이드란 #4. JNI와 NDK – NDK

Posted on

NDK란? 안드로이드 SDK(software developement kit)은 알고 있을 것이다. 이처럼 JNI의 이용과 관련하여 안드로이드에서 네이티브기반 어플리케이션 혹은 프레임워크를 구축할 수 있도록 하는 툴킷이 바로 NDK이다. NDK의 설치는 http://developer.android.com/tools/sdk/ndk/index.html 에서 파일을 받아 홈폴더에 압축을 풀고 경로설정을 하는 데에서부터 시작한다. 노틸러스에서 내폴더에 다운받은 NDK압축파일을 놓고 압축을 푼다. 그러면 android-ndk-r8d 폴더가 생길 것이다. (뒤에 r8d는 버전이다. 업데이트되면 바뀔수도 있다) […]

Post

안드로이드란 #3. JNI와 NDK – JNI

Posted on

JNI란? Java Native Interface는 자바와 C언어를 모두 활용할 수 있도록 해 준다. 자바에서 JNI를 쓰는 데에는 많은 이유가 있지만 대표적인 이유는 1. 자바 속도의 한계 극복 2. 하드웨어 제어 3. 기존 C코드 재사용성 향상 그런데 안드로이드는 기본적으로 어플리케이션이 자바로 구성되어 있고, 어플리케이션에서 장치의 각종 부분을 이용할 수 있도록 하려면 드라이버를 직접적으로 사용해야 하는 API를 구축하여야 […]