Android를 위한 Kotlin_0
지금 진행하고 있는 한이음 프로젝트에서 안드로이드 App을 개발하게 되었다.
물론 졸업프로젝트로 안드로이드를 다뤄본적은 있지만 제대로 다뤘다고 말할 순 없어서 이번에 프로젝트를 진행하면서 제대로 공부해보려한다.
언어는 JAVA가 아닌, 요즘 뜨고 있다는(?) 코틀린으로 하기로 했다.
그래서 이것도 공부를 해야한다..
안드로이드 자체를 제대로 배워본 적이 없기 때문에 『이것이 안드로이드다 with 코틀린』 이라는 책을 이용해서 공부해보려한다.
서론이 길었으니.. 바로 시작한다.
- 안드로이드 플랫폼에서 안드로이드가 실행되는 영역은 런타임(Runtime)이다.
- 안드로이드 플랫폼은 리눅스 운영체제 안에서 리눅스와 상호작용하면서 동작한다.
- 쉽게 생각하면, 안드로이드 플랫폼의 구조는 리눅스 커널과 자바 API 프레임워크가 결합된 형태이다.
- 안드로이드는 가상 머신 위에서 동작한다는 점에서 자바의 동작 구조를 차용하고 있다.
- 주로 자바를 앱 개발 언어로 사용해오다가, 2017년 5월 Google I/O에서 코틀린(Kotlin)을 공식 언어로 채택한 후 코틀린으로 앱을 개발하는 기업이 차츰 늘어나고 있다.
함수형 프로그래밍 언어
객체지향 프로그래밍인 자바와 비교하면, 자바는 클래스 내부에 있는 함수에서만 로직을 작성하지만,
함수형 프로그래밍은 이런 제한이 없이, 어디에서나 작성할 수 있다.
역시 모든건 Hello World로 시작해는 것이 국룰이다ㅎㅎ
# 자바 코드 - 객체지향
class Hello{
public static void main(String args[]) {
System.out.println('Hello World');
}
}
# 코틀린 코드 - 함수형
System.out.println('Hello World');
딱 봐도 매우 간결해보인다. 하 지 만 안드로이드 앱을 개발할 때는 코틀린도 객체지향 언어처럼 클래스 내에서 로직을 작성해야 한다..ㅋㅋㅋ
코틀린이 자바와 100% 호환된다는 이야기가 있는데, 분명 장점이겠지만 자바의 형식에 맞춰서 코틀린을 개발해야된다는 점에서는...흠
그래도 코틀린으로 작성하면 코드의 양이 훨씬 적어진다고 한다!
간단하게, 버튼 클릭 메시지를 보여주는 코드를 본다.
# 자바 코드 - ButtonActivity.java
class ButtonActivity extends Activity {
protected void onCreate(Bundle savedInstance) {
Button button = findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
System.out.println("Hello World");
}
}
}
}
# 코틀린 코드 - ButtonActivity.kt
class ButtonActivity : Activity() {
override fun onCreate(savedInstance: Bundle?) {
buttonn.setOnClicklistener {
print("Hello World")
}
}
}
안드로이드에서의 빌드
안드로이드는 2단계로 컴파일을 나눌 수 있다.
1단계에서는 바이트코드 단계이다. 소스코드와 리소스(아미지, 음악 파일 등), 라이브러리까지 한번에 컴파일해주면, 생성되는 파일은 안드로이드 플랫폼에서 인식할 수 있는 바이트코드로 컴파일된다. (스마트폰에서는 바로 실행할 수 없음)
2단계는 APK 파일 생성단계이다. 1단계에서 생성된 바이트코드 파일을 APK 매니저라는 도구로 설치파일 APK로 만들어준다.
이렇게 1,2단계를 모두 거쳐 APK 파일이 생성된 과정을 '빌드'라고 한다.
안드로이드 스튜디오 뷰의 구조
안드로이드 스튜디오에서 개발하면서 우리가 많이 확인하는 디렉터리는 Android뷰와 Project뷰이다.
Android 뷰는 실제 디렉터리 구조를 재배열해서 보여주는 뷰 (실제 파일 탐색기로 열어보면 구조가 완전히 다름!) 이고,
Project 뷰는 실제 디렉터리 구조를 보여주는 뷰이다.
(1) Android 뷰
직접 열어보면 한눈에 보이는 것은
- app (코딩하면서 생산한 모든 파일이 저장되는 directory)
- manifests (설치 관련 정보 directory)
- java (소스 코드 directory)
- res (이미지, 레이아웃, MP3 등 리소스 directory)
- Gradle Scripts (빌드에 필요한 설정 정보들이 저장되는 directory)
(2) Project 뷰
실제 디렉터리구조를 보여주는 Android뷰는 더 복잡하니 사진과 함께 보겠다! (복잡한 구조인만큼 작업 시 많이 보지는 않는다.)
가장 상단에 있는 디렉터리가 실제 프로젝트 디렉터리이다.
그 아래에 있는
app : 앱과 관련된 모든 소스(코드, 라이브러리, 이미지..etc) 디렉터리
app 아래에 있는
src : 내가 만든 소스 (코드, 레이아웃, 이미지..etc) 디렉터리
src 아래에 main 디렉터리에는
- java : 소스코드가 있는 디렉터리 (아직 java로 되어있네용)
- res : 이미지, 레이아웃, MP3 등 리소스 디렉터리. res 내에 있는 AndroidManiest.xml 파일은 설치 정보 파일이다.
마지막으로 build.gradle은 빌드 정보 파일이다.