티스토리 뷰
프로젝트 디렉토리 구조
test 라는 이름으로 프로젝트 생성 후, test.kt
이름으로 된 파일에 소스코드 작성
디렉토리 구조가 제일 이해가 안돼서 소스 파일을 여기저기 이동 후 돌려보거나 git 디렉토리 보고 비교하는 중.. 몇번 해보고 정확히 파악 필요.
# 소스 경로: AndroidStudioProjects/test/app/src/main/java/com/example/test
% tree -L 2 test
test
├── app
│ ├── build
│ ├── build.gradle
│ ├── libs
│ ├── proguard-rules.pro
│ └── src
├── build
│ └── kotlin
├── build.gradle
├── gradle
│ └── wrapper
├── gradle.properties
├── gradlew
├── gradlew.bat
├── local.properties
└── settings.gradle
9 directories, 8 files
% tree -L 2 test/app/src
test/app/src
├── androidTest
│ └── java
├── main
│ ├── AndroidManifest.xml
│ ├── java
│ └── res
└── test
└── java
% tree -L 4 test/app/src/main/java/
test/app/src/main/java/
└── com
└── example
└── test
└── test.kt
4 directories, 1 file
main 함수만 있는 코틀린 소스
package com.example.test
fun main() {
println("hello")
}
/*
fun main(args: Array<String>) {
println("hello")
}*/
실행
alt + Cmd + R
(한번 써본 단축키)
주석 Cmd + /
여러 줄 주석 Cmd + Shift + /
(이것저것 눌러보다가 얻어걸린 단축키)
함수 접기 Cmd + -
합수 펼치기 Cmd + +
바이트 코드 보기
//TODO 코틀린 바이트코드란?
Kotlin Bytecode
// ================com/example/test/TestKt.class =================
// class version 52.0 (52)
// access flags 0x31
public final class com/example/test/TestKt {
// access flags 0x19
public final static main()V
L0
LINENUMBER 5 L0
LDC "hello"
ASTORE 0
L1
GETSTATIC java/lang/System.out : Ljava/io/PrintStream;
ALOAD 0
INVOKEVIRTUAL java/io/PrintStream.println (Ljava/lang/Object;)V
L2
L3
LINENUMBER 6 L3
RETURN
L4
MAXSTACK = 2
MAXLOCALS = 1
// access flags 0x1009
public static synthetic main([Ljava/lang/String;)V
INVOKESTATIC com/example/test/TestKt.main ()V
RETURN
MAXSTACK = 0
MAXLOCALS = 1
@Lkotlin/Metadata;(mv={1, 7, 1}, k=2, d1={"\u0000\u0008\n\u0000\n\u0002\u0010\u0002\n\u0000\u001a\u0006\u0010\u0000\u001a\u00020\u0001\u00a8\u0006\u0002"}, d2={"main", "", "test.app.main"})
// compiled from: test.kt
}
// ================META-INF/test.app.main.kotlin_module =================
com.example.testTestKt"*
Decomile 버튼 클릭 시 .java
파일에서 자바 소스로 확인가능하다.
test.decompiled.java
package com.example.test;
import kotlin.Metadata;
@Metadata(
mv = {1, 7, 1},
k = 2,
d1 = {"\u0000\b\n\u0000\n\u0002\u0010\u0002\n\u0000\u001a\u0006\u0010\u0000\u001a\u00020\u0001¨\u0006\u0002"},
d2 = {"main", "", "test.app.main"}
)
public final class TestKt {
public static final void main() {
String var0 = "hello";
System.out.println(var0);
}
// $FF: synthetic method
public static void main(String[] var0) {
main();
}
}
'IT > Android' 카테고리의 다른 글
[안드로이드] 샘플 어플리케이션 만들기 (0) | 2023.02.06 |
---|---|
[Kotlin] 코틀린 객체지향 프로그래밍 (0) | 2023.02.04 |
[Kotlin] 코틀린 시작하기 | 언어 소개 | 변수 함수 | 조건문 반복 (0) | 2023.02.04 |
[안드로이드] 안드로이드 앱의 기본 구조 | 책 요약 (0) | 2023.01.31 |
[Kotlin] 맥북에서 안드로이드 코틀린 환경 셋팅 (0) | 2023.01.30 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 내채공만기
- Repository pattern
- 안드로이드
- 클라우드 네이티브 애플리케이션 디자인 패턴
- 내채공
- gitlab_ssh_permission_denied
- VLLO
- 수학 #다이나믹프로그래밍 #게임이론
- 맥북개발환경
- 프로그래머스
- 동기메시징기술
- 아이폰영상편집어플후기
- 코딩테스트
- Vlogr
- InShot
- 청년내일채움공제
- 레포지토리패턴
- https://kotlinlang.org/docs/object-declarations.html
- 디자인패턴
- 알고리즘
- android
- Kotlin
- AdobeClip
- 코틀린
- EH
- TKD
- 쇼코의미소
- 통신패턴
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
글 보관함